Fix memory leaks, Mixed declarations

This commit is contained in:
David PHAM-VAN 2017-03-27 11:11:54 -07:00
parent 5a66fe841a
commit b46aaeb973
3 changed files with 24 additions and 11 deletions

View File

@ -658,7 +658,7 @@ BOOL drive_file_set_information(DRIVE_FILE* file, UINT32 FsInformationClass, UIN
/* http://msdn.microsoft.com/en-us/library/cc232098.aspx */
/* http://msdn.microsoft.com/en-us/library/cc241371.aspx */
if (file->is_dir && !PathIsDirectoryEmptyW(file->fullpath))
break; // TODO: SetLastError ???
break; /* TODO: SetLastError ??? */
if (Length)
Stream_Read_UINT8(input, delete_pending);

View File

@ -782,9 +782,7 @@ BOOL SetStdHandleEx(DWORD dwStdHandle, HANDLE hNewHandle, HANDLE* phOldHandle)
BOOL GetDiskFreeSpaceA(LPCSTR lpRootPathName, LPDWORD lpSectorsPerCluster,
LPDWORD lpBytesPerSector, LPDWORD lpNumberOfFreeClusters, LPDWORD lpTotalNumberOfClusters)
{
#if defined(__APPLE__) || defined(__FreeBSD__) || defined(__OpenBSD__)
#define STATVFS statvfs
#elif defined(ANDROID)
#if defined(ANDROID)
#define STATVFS statfs
#else
#define STATVFS statvfs

View File

@ -844,6 +844,10 @@ HANDLE FindFirstFileA(LPCSTR lpFileName, LPWIN32_FIND_DATAA lpFindFileData)
HANDLE FindFirstFileW(LPCWSTR lpFileName, LPWIN32_FIND_DATAW lpFindFileData)
{
char* utfFileName = NULL;
HANDLE h;
WCHAR* unicodeFileName;
int length;
LPWIN32_FIND_DATAA fd = (LPWIN32_FIND_DATAA)malloc(sizeof(WIN32_FIND_DATAA));
if (!fd)
{
@ -857,18 +861,19 @@ HANDLE FindFirstFileW(LPCWSTR lpFileName, LPWIN32_FIND_DATAW lpFindFileData)
return INVALID_HANDLE_VALUE;
}
HANDLE h = FindFirstFileA(utfFileName, fd);
h = FindFirstFileA(utfFileName, fd);
free(utfFileName);
if (h != INVALID_HANDLE_VALUE)
{
CopyMemory(lpFindFileData, fd, 352);
WCHAR* unicodeFileName = NULL;
int length = ConvertToUnicode(CP_UTF8, 0, fd->cFileName, -1, &unicodeFileName, 0) * 2;
unicodeFileName = NULL;
length = ConvertToUnicode(CP_UTF8, 0, fd->cFileName, -1, &unicodeFileName, 0) * 2;
if (length == 0)
{
SetLastError(ERROR_NOT_ENOUGH_MEMORY);
free(fd);
return INVALID_HANDLE_VALUE;
}
CopyMemory(&lpFindFileData->cFileName, unicodeFileName, length);
@ -897,6 +902,7 @@ BOOL FindNextFileA(HANDLE hFindFile, LPWIN32_FIND_DATAA lpFindFileData)
char* fullpath;
int pathlen;
int namelen;
UINT64 ft;
ZeroMemory(lpFindFileData, sizeof(WIN32_FIND_DATAA));
@ -917,7 +923,8 @@ BOOL FindNextFileA(HANDLE hFindFile, LPWIN32_FIND_DATAA lpFindFileData)
pathlen = strlen(pFileSearch->lpPath);
fullpath = (char*)malloc(pathlen + namelen + 2);
if (fullpath == NULL) {
if (fullpath == NULL)
{
return INVALID_HANDLE_VALUE;
}
memcpy(fullpath, pFileSearch->lpPath, pathlen);
@ -926,7 +933,12 @@ BOOL FindNextFileA(HANDLE hFindFile, LPWIN32_FIND_DATAA lpFindFileData)
fullpath[pathlen+namelen+1] = 0;
if (lstat(fullpath, &fileStat) != 0)
{
free(fullpath);
return INVALID_HANDLE_VALUE;
}
free(fullpath);
lpFindFileData->dwFileAttributes = 0;
@ -943,7 +955,6 @@ BOOL FindNextFileA(HANDLE hFindFile, LPWIN32_FIND_DATAA lpFindFileData)
if (! (fileStat.st_mode & S_IWUSR))
lpFindFileData->dwFileAttributes |= FILE_ATTRIBUTE_READONLY;
UINT64 ft;
#ifdef _DARWIN_FEATURE_64_BIT_INODE
ft = STAT_TIME_TO_FILETIME(fileStat.st_birthtime);
#else
@ -973,6 +984,9 @@ BOOL FindNextFileA(HANDLE hFindFile, LPWIN32_FIND_DATAA lpFindFileData)
BOOL FindNextFileW(HANDLE hFindFile, LPWIN32_FIND_DATAW lpFindFileData)
{
WCHAR* unicodeFileName;
int length;
LPWIN32_FIND_DATAA fd = (LPWIN32_FIND_DATAA)malloc(sizeof(WIN32_FIND_DATAA));
if (!fd)
{
@ -984,11 +998,12 @@ BOOL FindNextFileW(HANDLE hFindFile, LPWIN32_FIND_DATAW lpFindFileData)
{
CopyMemory(lpFindFileData, fd, 352);
WCHAR* unicodeFileName = NULL;
int length = ConvertToUnicode(CP_UTF8, 0, fd->cFileName, -1, &unicodeFileName, 0) * 2;
unicodeFileName = NULL;
length = ConvertToUnicode(CP_UTF8, 0, fd->cFileName, -1, &unicodeFileName, 0) * 2;
if (length == 0)
{
SetLastError(ERROR_NOT_ENOUGH_MEMORY);
free(fd);
return FALSE;
}
CopyMemory(&lpFindFileData->cFileName, unicodeFileName, length);