diff --git a/src/corelib/io/qlockfile_unix.cpp b/src/corelib/io/qlockfile_unix.cpp
index bcef84206e8dae3b1aefd1b5eeac05227778648b..f23a232fb8cde20e8d2ded6ed81564772608d162 100644
--- a/src/corelib/io/qlockfile_unix.cpp
+++ b/src/corelib/io/qlockfile_unix.cpp
@@ -139,12 +139,14 @@ static bool fcntlWorksAfterFlock(const QString &fn)
     if (fcntlOK.isDestroyed())
         return QLockFilePrivate::checkFcntlWorksAfterFlock(fn);
     bool *worksPtr = fcntlOK->object(fn);
-    if (!worksPtr) {
-        worksPtr = new bool(QLockFilePrivate::checkFcntlWorksAfterFlock(fn));
-        fcntlOK->insert(fn, worksPtr);
-    }
+    if (worksPtr)
+        return *worksPtr;
+
+    const bool val = QLockFilePrivate::checkFcntlWorksAfterFlock(fn);
+    worksPtr = new bool(val);
+    fcntlOK->insert(fn, worksPtr);
 
-    return *worksPtr;
+    return val;
 }
 
 static bool setNativeLocks(const QString &fileName, int fd)