]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Check invariant in DiskdFile::writeDone (CID 980998)
authorFrancesco Chemolli <kinkie@squid-cache.org>
Thu, 9 Jul 2015 13:55:56 +0000 (15:55 +0200)
committerFrancesco Chemolli <kinkie@squid-cache.org>
Thu, 9 Jul 2015 13:55:56 +0000 (15:55 +0200)
src/DiskIO/DiskDaemon/DiskdFile.cc

index a257012a27c50785cda76cf61abaea531cb56a26..dcd85681c9ed691de816ebd1091ed922863a71ab 100644 (file)
@@ -351,7 +351,7 @@ DiskdFile::readDone(diomsg * M)
     if (readRequest != NULL) {
         const uint32_t lcount = readRequest->unlock();
         if (lcount == 0)
-            debugs(79, DBG_IMPORTANT, "invariant check failed: redRequest reference count is 0");
+            debugs(79, DBG_IMPORTANT, "invariant check failed: readRequest reference count is 0");
     }
 
     if (M->status < 0) {
@@ -375,9 +375,13 @@ DiskdFile::writeDone(diomsg *M)
     debugs(79, 3, "storeDiskdWriteDone: status " << M->status);
     assert (M->requestor);
     WriteRequest::Pointer writeRequest = dynamic_cast<WriteRequest *>(M->requestor);
+
     /* remove the free protection */
-    if (writeRequest != NULL)
-        writeRequest->unlock();
+    if (writeRequest != NULL) {
+        const uint32_t lcount = writeRequest->unlock();
+        if (lcount == 0)
+            debugs(79, DBG_IMPORTANT, "invariant check failed: writeRequest reference count is 0");
+    }
 
     if (M->status < 0) {
         errorOccured = true;