if( pDirNode->ObjectInformation->DataVersion.QuadPart != pCurrentDirEntry->DataVersion.QuadPart)
{
- AFSInvalidateObject( &pDirNode->ObjectInformation,
-+ AFS_INVALIDATE_DATA_VERSION);
+ LONG lCount;
+ AFSObjectInfoCB *pObjectInfo = pDirNode->ObjectInformation;
+
+ lCount = InterlockedIncrement( &pObjectInfo->ObjectReferenceCount);
+
+ AFSInvalidateObject( &pObjectInfo,
+ AFS_INVALIDATE_DATA_VERSION);
+
+ if( pObjectInfo != NULL)
+ {
+
+ lCount = InterlockedDecrement( &pObjectInfo->ObjectReferenceCount);
+ }
}
else
{
AFSObjectInfoCB *pObjectInfo = NULL;
ULONGLONG ullIndex = 0;
UNICODE_STRING uniGUID;
+ LONG lCount;
__Enter
{
if( pObjectInfo->DataVersion.QuadPart != pCurrentDirEntry->DataVersion.QuadPart)
{
+ lCount = InterlockedIncrement( &pObjectInfo->ObjectReferenceCount);
+
AFSInvalidateObject( &pObjectInfo,
AFS_INVALIDATE_DATA_VERSION);
+
+ if( pObjectInfo != NULL)
+ {
+
+ lCount = InterlockedDecrement( &pObjectInfo->ObjectReferenceCount);
+ }
}
else
{
AFSInvalidateObject( &pCurrentObject,
Reason);
- lCount = InterlockedDecrement( &pCurrentObject->ObjectReferenceCount);
+ if ( pCurrentObject)
+ {
- AFSDbgLogMsg( AFS_SUBSYSTEM_OBJECT_REF_COUNTING,
- AFS_TRACE_LEVEL_VERBOSE,
- "AFSInvalidateVolumeObjects Decrement count on object %08lX Cnt %d\n",
- pCurrentObject,
- lCount);
+ lCount = InterlockedDecrement( &pCurrentObject->ObjectReferenceCount);
+
+ AFSDbgLogMsg( AFS_SUBSYSTEM_OBJECT_REF_COUNTING,
+ AFS_TRACE_LEVEL_VERBOSE,
+ "AFSInvalidateVolumeObjects Decrement count on object %08lX Cnt %d\n",
+ pCurrentObject,
+ lCount);
+ }
}
//