summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMorten Johan Sørvig <morten.sorvig@nokia.com>2010-04-21 06:09:36 (GMT)
committerMorten Johan Sørvig <morten.sorvig@nokia.com>2010-04-21 06:09:36 (GMT)
commit4c4f726a91e9177ad6840c80a347f73932eda844 (patch)
tree92d1b487ccfb0a727caf62830ae81552dc899320
parente46aeaf529be4598d809417e74ac09de4170465f (diff)
downloadQt-4c4f726a91e9177ad6840c80a347f73932eda844.zip
Qt-4c4f726a91e9177ad6840c80a347f73932eda844.tar.gz
Qt-4c4f726a91e9177ad6840c80a347f73932eda844.tar.bz2
Revert "Report the error as being AlreadyExists if this is why it fails"
This reverts commit 73a1291a3f097787f00d79d0d27bd75219bf8e3d. Test failures: qsystemsemaphore::key (unix platforms) All of qsharedmemory (unix, windows)
-rw-r--r--src/corelib/kernel/qsystemsemaphore_unix.cpp2
-rw-r--r--src/corelib/kernel/qsystemsemaphore_win.cpp8
-rw-r--r--tests/auto/qtipc/qsystemsemaphore/tst_qsystemsemaphore.cpp25
3 files changed, 3 insertions, 32 deletions
diff --git a/src/corelib/kernel/qsystemsemaphore_unix.cpp b/src/corelib/kernel/qsystemsemaphore_unix.cpp
index d6c6c37..07e3618 100644
--- a/src/corelib/kernel/qsystemsemaphore_unix.cpp
+++ b/src/corelib/kernel/qsystemsemaphore_unix.cpp
@@ -145,10 +145,10 @@ key_t QSystemSemaphorePrivate::handle(QSystemSemaphore::AccessMode mode)
// Get semaphore
semaphore = semget(unix_key, 1, 0666 | IPC_CREAT | IPC_EXCL);
if (-1 == semaphore) {
- setErrorString(QLatin1String("QSystemSemaphore::handle"));
if (errno == EEXIST)
semaphore = semget(unix_key, 1, 0666 | IPC_CREAT);
if (-1 == semaphore) {
+ setErrorString(QLatin1String("QSystemSemaphore::handle"));
cleanHandle();
return -1;
}
diff --git a/src/corelib/kernel/qsystemsemaphore_win.cpp b/src/corelib/kernel/qsystemsemaphore_win.cpp
index 74f253a..96a47f5 100644
--- a/src/corelib/kernel/qsystemsemaphore_win.cpp
+++ b/src/corelib/kernel/qsystemsemaphore_win.cpp
@@ -69,10 +69,6 @@ void QSystemSemaphorePrivate::setErrorString(const QString &function)
error = QSystemSemaphore::PermissionDenied;
errorString = QCoreApplication::translate("QSystemSemaphore", "%1: permission denied").arg(function);
break;
- case ERROR_ALREADY_EXISTS:
- error = QSystemSemaphore::AlreadyExists;
- errorString = QCoreApplication::translate("QSystemSemaphore", "%1: already exists").arg(function);
- break;
default:
errorString = QCoreApplication::translate("QSystemSemaphore", "%1: unknown error %2").arg(function).arg(windowsError);
error = QSystemSemaphore::UnknownError;
@@ -92,8 +88,8 @@ HANDLE QSystemSemaphorePrivate::handle(QSystemSemaphore::AccessMode)
if (semaphore == 0) {
QString safeName = makeKeyFileName();
semaphore = CreateSemaphore(0, initialValue, MAXLONG, (wchar_t*)safeName.utf16());
- // If the semaphore exists then the handle is still valid but there is still an error
- setErrorString(QLatin1String("QSystemSemaphore::handle"));
+ if (semaphore == NULL)
+ setErrorString(QLatin1String("QSystemSemaphore::handle"));
}
return semaphore;
diff --git a/tests/auto/qtipc/qsystemsemaphore/tst_qsystemsemaphore.cpp b/tests/auto/qtipc/qsystemsemaphore/tst_qsystemsemaphore.cpp
index 0dc9c99..eb82fd4 100644
--- a/tests/auto/qtipc/qsystemsemaphore/tst_qsystemsemaphore.cpp
+++ b/tests/auto/qtipc/qsystemsemaphore/tst_qsystemsemaphore.cpp
@@ -76,8 +76,6 @@ private slots:
void undo();
void initialValue();
- void exists();
-
private:
QSystemSemaphore *existingLock;
@@ -299,29 +297,6 @@ void tst_QSystemSemaphore::initialValue()
release.waitForFinished(LACKYWAITTIME);
QVERIFY(acquire.state()== QProcess::NotRunning);
}
-
-void tst_QSystemSemaphore::exists()
-{
- QSystemSemaphore sem("store", 1, QSystemSemaphore::Create);
- QVERIFY(sem.error() == QSystemSemaphore::NoError);
- QVERIFY(sem.acquire());
- QVERIFY(sem.error() == QSystemSemaphore::NoError);
-
- {
- QSystemSemaphore dupSem("store", 1, QSystemSemaphore::Create);
- QVERIFY(dupSem.error() == QSystemSemaphore::AlreadyExists);
- }
-#ifndef Q_OS_UNIX
- // The rest of the test does not make sense on Unix because open will
- // actually succeed anyway (see QSystemSemaphore docs)
- QSystemSemaphore anotherSem("store", 1, QSystemSemaphore::Open);
- QVERIFY(anotherSem.error() == QSystemSemaphore::AlreadyExists);
- QVERIFY(sem.release());
- QVERIFY(anotherSem.acquire());
- QVERIFY(anotherSem.release());
-#endif
-}
-
QTEST_MAIN(tst_QSystemSemaphore)
#include "tst_qsystemsemaphore.moc"