Windows: AFSDeleteObjectInfo InterlockedCompareExchangePointer
authorJeffrey Altman <jaltman@your-file-system.com>
Thu, 28 Mar 2013 16:06:34 +0000 (12:06 -0400)
committerJeffrey Altman <jaltman@your-file-system.com>
Sun, 31 Mar 2013 00:34:07 +0000 (17:34 -0700)
Correct the third parameter passed to InterlockedCompareExchangePointer
in AFSDeleteObjectInfo() which prevented *ppObjectInfo from being set
to NULL.

Change-Id: I4edc1d69114c02ffff8181b176a5f0bac82f6802
Reviewed-on: http://gerrit.openafs.org/9689
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@your-file-system.com>
Tested-by: Jeffrey Altman <jaltman@your-file-system.com>

src/WINNT/afsrdr/kernel/lib/AFSGeneric.cpp

index 5a9c833..f5bb20c 100644 (file)
@@ -6848,14 +6848,14 @@ AFSDeleteObjectInfo( IN AFSObjectInfoCB **ppObjectInfo)
         // embedded in the VolumeCB.
         //
 
-        ASSERT( TRUE);
+        ASSERT( FALSE);
 
         return;
     }
 
     pObjectInfo = (AFSObjectInfoCB *) InterlockedCompareExchangePointer( (PVOID *)ppObjectInfo,
                                                                          NULL,
-                                                                         (PVOID *)ppObjectInfo);
+                                                                         *ppObjectInfo);
 
     if ( pObjectInfo == NULL)
     {
@@ -6863,6 +6863,8 @@ AFSDeleteObjectInfo( IN AFSObjectInfoCB **ppObjectInfo)
         return;
     }
 
+    ASSERT( *ppObjectInfo == NULL);
+
     ASSERT( pObjectInfo->ObjectReferenceCount == 0);
 
     bHeldInService = BooleanFlagOn( pObjectInfo->Flags, AFS_OBJECT_HELD_IN_SERVICE);