if( BooleanFlagOn( pFcb->Flags, AFS_FCB_FLAG_PURGE_ON_CLOSE))
{
+ //
+ // The ObjectReferenceCount will be freed by AFSPerformObjectInvalidate
+ //
+
InterlockedIncrement( &pObjectInfo->ObjectReferenceCount);
ClearFlag( pFcb->Flags, AFS_FCB_FLAG_PURGE_ON_CLOSE);
LONG lCount;
AFSObjectInfoCB *pObjectInfo = pDirNode->ObjectInformation;
- lCount = InterlockedIncrement( &pObjectInfo->ObjectReferenceCount);
-
- AFSInvalidateObject( &pObjectInfo,
- AFS_INVALIDATE_DATA_VERSION);
+ //
+ // The ObjectReferenceCount will be freed by AFSPerformObjectInvalidate
+ //
- if( pObjectInfo != NULL)
- {
+ lCount = InterlockedIncrement( &pObjectInfo->ObjectReferenceCount);
- lCount = InterlockedDecrement( &pObjectInfo->ObjectReferenceCount);
- }
+ AFSPerformObjectInvalidate( pObjectInfo,
+ AFS_INVALIDATE_DATA_VERSION);
}
else
{
if( pObjectInfo->DataVersion.QuadPart != pCurrentDirEntry->DataVersion.QuadPart)
{
- lCount = InterlockedIncrement( &pObjectInfo->ObjectReferenceCount);
-
- AFSInvalidateObject( &pObjectInfo,
- AFS_INVALIDATE_DATA_VERSION);
+ //
+ // The ObjectReferenceCount will be freed by AFSPerformObjectInvalidate
+ //
- if( pObjectInfo != NULL)
- {
+ lCount = InterlockedIncrement( &pObjectInfo->ObjectReferenceCount);
- lCount = InterlockedDecrement( &pObjectInfo->ObjectReferenceCount);
- }
+ AFSPerformObjectInvalidate( pObjectInfo,
+ AFS_INVALIDATE_DATA_VERSION);
}
else
{