mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-17 21:29:20 +00:00
Fix destroyDirectory bug
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19746 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
5037a15910
commit
c690cc0465
@ -562,15 +562,17 @@ Path::destroyDirectory(bool remove_contents) const {
|
||||
// If it doesn't exist, we're done.
|
||||
if (!exists()) return true;
|
||||
|
||||
char *pathname = reinterpret_cast<char *>(_alloca(path.length()+1));
|
||||
path.copy(pathname,path.length()+1);
|
||||
char *pathname = reinterpret_cast<char *>(_alloca(path.length()+2));
|
||||
int lastchar = path.length() - 1 ;
|
||||
if (pathname[lastchar] == '/')
|
||||
pathname[lastchar] = 0;
|
||||
path.copy(pathname,lastchar+2);
|
||||
|
||||
// Make path end with '/*'.
|
||||
pathname[lastchar+1] = '*';
|
||||
pathname[lastchar+2] = 0;
|
||||
|
||||
if (remove_contents) {
|
||||
WIN32_FIND_DATA fd;
|
||||
HANDLE h = FindFirstFile(path.c_str(), &fd);
|
||||
HANDLE h = FindFirstFile(pathname, &fd);
|
||||
|
||||
// It's a bad idea to alter the contents of a directory while enumerating
|
||||
// its contents. So build a list of its contents first, then destroy them.
|
||||
@ -610,6 +612,7 @@ Path::destroyDirectory(bool remove_contents) const {
|
||||
}
|
||||
}
|
||||
|
||||
pathname[lastchar] = 0;
|
||||
if (!RemoveDirectory(pathname))
|
||||
ThrowError(std::string(pathname) + ": Can't destroy directory: ");
|
||||
return true;
|
||||
|
Loading…
Reference in New Issue
Block a user