GetDiskFreeSpaceEx32A can get null pointers and still not crash.
diff --git a/files/drive.c b/files/drive.c index 0c63a9c..c78c8ac 100644 --- a/files/drive.c +++ b/files/drive.c
@@ -827,10 +827,14 @@ } if (!DRIVE_GetFreeSpace(drive, &size, &available)) return FALSE; /*FIXME: Do we have the number of bytes available to the user? */ - avail->HighPart = available.HighPart; - totalfree->HighPart = size.HighPart; - avail->LowPart = available.LowPart ; - totalfree->LowPart = size.LowPart ; + if (totalfree) { + totalfree->HighPart = size.HighPart; + totalfree->LowPart = size.LowPart ; + } + if (avail) { + avail->HighPart = available.HighPart; + avail->LowPart = available.LowPart ; + } return TRUE; }