Fix CreateFileMapping() error handling

CreateFileMapping() returns NULL in case of an error.
The patch corrects the wrong testing on INVALID_HANDLE_VALUE, and sets
NULL for invalid handles.

Change-Id: Iaab4945ed88ee92bbf9a0871e95a5820dd1a56ed
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
This commit is contained in:
Peter Kümmel 2013-02-22 09:58:41 +01:00 committed by The Qt Project
parent f3f6074355
commit 1a8f67938c
2 changed files with 5 additions and 4 deletions

View File

@ -128,7 +128,7 @@ void QFSFileEnginePrivate::init()
#ifdef Q_OS_WIN
fileAttrib = INVALID_FILE_ATTRIBUTES;
fileHandle = INVALID_HANDLE_VALUE;
mapHandle = INVALID_HANDLE_VALUE;
mapHandle = NULL;
#ifndef Q_OS_WINCE
cachedFd = -1;
#endif

View File

@ -900,7 +900,7 @@ uchar *QFSFileEnginePrivate::map(qint64 offset, qint64 size,
return 0;
}
if (mapHandle == INVALID_HANDLE_VALUE) {
if (mapHandle == NULL) {
// get handle to the file
HANDLE handle = fileHandle;
@ -933,7 +933,7 @@ uchar *QFSFileEnginePrivate::map(qint64 offset, qint64 size,
// first create the file mapping handle
DWORD protection = (openMode & QIODevice::WriteOnly) ? PAGE_READWRITE : PAGE_READONLY;
mapHandle = ::CreateFileMapping(handle, 0, protection, 0, 0, 0);
if (mapHandle == INVALID_HANDLE_VALUE) {
if (mapHandle == NULL) {
q->setError(QFile::PermissionsError, qt_error_string());
#ifdef Q_USE_DEPRECATED_MAP_API
::CloseHandle(handle);
@ -976,6 +976,7 @@ uchar *QFSFileEnginePrivate::map(qint64 offset, qint64 size,
}
::CloseHandle(mapHandle);
mapHandle = NULL;
return 0;
}
@ -995,7 +996,7 @@ bool QFSFileEnginePrivate::unmap(uchar *ptr)
maps.remove(ptr);
if (maps.isEmpty()) {
::CloseHandle(mapHandle);
mapHandle = INVALID_HANDLE_VALUE;
mapHandle = NULL;
}
return true;