Bug 681660 - [win] GetDiskSpaceAvailable doesn't work on files.

r=jimm
This commit is contained in:
Marco Bonardo
2011-08-26 13:29:45 +02:00
parent 4215878221
commit 45434c3917
2 changed files with 28 additions and 0 deletions

View File

@@ -2137,6 +2137,15 @@ nsLocalFile::GetDiskSpaceAvailable(PRInt64 *aDiskSpaceAvailable)
ResolveAndStat();
if (mFileInfo64.type == PR_FILE_FILE) {
// Since GetDiskFreeSpaceExW works only on directories, use the parent.
nsCOMPtr<nsIFile> parent;
if (NS_SUCCEEDED(GetParent(getter_AddRefs(parent))) && parent) {
nsCOMPtr<nsILocalFile> localParent = do_QueryInterface(parent);
return localParent->GetDiskSpaceAvailable(aDiskSpaceAvailable);
}
}
ULARGE_INTEGER liFreeBytesAvailableToCaller, liTotalNumberOfBytes;
if (::GetDiskFreeSpaceExW(mResolvedPath.get(), &liFreeBytesAvailableToCaller,
&liTotalNumberOfBytes, NULL))