summaryrefslogtreecommitdiffstats
path: root/src/corelib/kernel/qsharedmemory_win.cpp
diff options
context:
space:
mode:
authorRitt Konstantin <ritt.ks@gmail.com>2011-06-06 14:56:44 +0200
committerHarald Fernengel <harald.fernengel@nokia.com>2011-06-06 14:56:44 +0200
commit11bacd30967435a54eb74e9e2e36a97b12629a8c (patch)
treec13b3e63d56f3e7cceaa2c3b374f334412d40b63 /src/corelib/kernel/qsharedmemory_win.cpp
parent1c2a9b1294dd7dd0762f4f57c29284d8491125ff (diff)
minor improvements for QSharedMemory
remove unused includes; generate error string if error occurred only; make some error strings equal on different platforms; avoid code duplication; minor code simlifications and clean-ups Merge-request: 1248 Reviewed-by: Harald Fernengel <harald.fernengel@nokia.com>
Diffstat (limited to 'src/corelib/kernel/qsharedmemory_win.cpp')
-rw-r--r--src/corelib/kernel/qsharedmemory_win.cpp49
1 files changed, 27 insertions, 22 deletions
diff --git a/src/corelib/kernel/qsharedmemory_win.cpp b/src/corelib/kernel/qsharedmemory_win.cpp
index 3cc14fe512..d4da30dbc9 100644
--- a/src/corelib/kernel/qsharedmemory_win.cpp
+++ b/src/corelib/kernel/qsharedmemory_win.cpp
@@ -41,24 +41,30 @@
#include "qsharedmemory.h"
#include "qsharedmemory_p.h"
-#include "qsystemsemaphore.h"
-#include <qdebug.h>
-QT_BEGIN_NAMESPACE
+#include <qdebug.h>
#ifndef QT_NO_SHAREDMEMORY
-QSharedMemoryPrivate::QSharedMemoryPrivate() : QObjectPrivate(),
- memory(0), size(0), error(QSharedMemory::NoError),
- systemSemaphore(QString()), lockedByMe(false), hand(0)
+//#define QSHAREDMEMORY_DEBUG
+
+QT_BEGIN_NAMESPACE
+
+QSharedMemoryPrivate::QSharedMemoryPrivate()
+ : QObjectPrivate(), memory(0), size(0), error(QSharedMemory::NoError),
+#ifndef QT_NO_SYSTEMSEMAPHORE
+ systemSemaphore(QString()), lockedByMe(false),
+#endif
+ hand(0)
{
}
void QSharedMemoryPrivate::setErrorString(const QString &function)
{
- BOOL windowsError = GetLastError();
+ DWORD windowsError = GetLastError();
if (windowsError == 0)
return;
+
switch (windowsError) {
case ERROR_ALREADY_EXISTS:
error = QSharedMemory::AlreadyExists;
@@ -89,19 +95,20 @@ void QSharedMemoryPrivate::setErrorString(const QString &function)
default:
errorString = QSharedMemory::tr("%1: unknown error %2").arg(function).arg(windowsError);
error = QSharedMemory::UnknownError;
-#if defined QSHAREDMEMORY_DEBUG
+#ifdef QSHAREDMEMORY_DEBUG
qDebug() << errorString << "key" << key;
#endif
+ break;
}
}
HANDLE QSharedMemoryPrivate::handle()
{
if (!hand) {
- QString function = QLatin1String("QSharedMemory::handle");
+ // don't allow making handles on empty keys
if (nativeKey.isEmpty()) {
error = QSharedMemory::KeyError;
- errorString = QSharedMemory::tr("%1: unable to make key").arg(function);
+ errorString = QSharedMemory::tr("%1: key is empty").arg(QLatin1String("QSharedMemory::handle"));
return false;
}
#ifndef Q_OS_WINCE
@@ -111,11 +118,10 @@ HANDLE QSharedMemoryPrivate::handle()
// attach as it seems.
hand = CreateFileMapping(INVALID_HANDLE_VALUE, 0, PAGE_READWRITE, 0, 0, (wchar_t*)nativeKey.utf16());
#endif
- if (!hand) {
- setErrorString(function);
- return false;
- }
+ if (!hand)
+ setErrorString(QLatin1String("QSharedMemory::handle"));
}
+
return hand;
}
@@ -132,20 +138,20 @@ bool QSharedMemoryPrivate::cleanHandle()
bool QSharedMemoryPrivate::create(int size)
{
- QString function = QLatin1String("QSharedMemory::create");
if (nativeKey.isEmpty()) {
error = QSharedMemory::KeyError;
- errorString = QSharedMemory::tr("%1: key error").arg(function);
+ errorString = QSharedMemory::tr("%1: key is empty").arg(QLatin1String("QSharedMemory::create"));
return false;
}
// Create the file mapping.
hand = CreateFileMapping(INVALID_HANDLE_VALUE, 0, PAGE_READWRITE, 0, size, (wchar_t*)nativeKey.utf16());
- setErrorString(function);
// hand is valid when it already exists unlike unix so explicitly check
- if (error == QSharedMemory::AlreadyExists || !hand)
+ if (error == QSharedMemory::AlreadyExists || !hand) {
+ setErrorString(QLatin1String("QSharedMemory::create"));
return false;
+ }
return true;
}
@@ -167,7 +173,7 @@ bool QSharedMemoryPrivate::attach(QSharedMemory::AccessMode mode)
// Windows doesn't set an error code on this one,
// it should only be a kernel memory error.
error = QSharedMemory::UnknownError;
- errorString = QSharedMemory::tr("%1: size query failed").arg(QLatin1String("QSharedMemory::attach: "));
+ errorString = QSharedMemory::tr("%1: size query failed").arg(QLatin1String("QSharedMemory::attach"));
return false;
}
size = info.RegionSize;
@@ -189,7 +195,6 @@ bool QSharedMemoryPrivate::detach()
return cleanHandle();
}
-#endif //QT_NO_SHAREDMEMORY
-
-
QT_END_NAMESPACE
+
+#endif // QT_NO_SHAREDMEMORY