diff --git a/drivers/filesystems/fastfat/fcb.c b/drivers/filesystems/fastfat/fcb.c index a791c27a40..5ed1ea9c89 100644 --- a/drivers/filesystems/fastfat/fcb.c +++ b/drivers/filesystems/fastfat/fcb.c @@ -348,6 +348,8 @@ _vfatReleaseFCB( ) { PVFATFCB tmpFcb; + ULONG RefCount; + PFILE_OBJECT tmpFileObject; #ifdef KDBG if (DebugFile.Buffer != NULL && FsRtlIsNameInExpression(&DebugFile, &pFCB->LongNameU, FALSE, NULL)) @@ -363,8 +365,6 @@ _vfatReleaseFCB( while (pFCB) { - ULONG RefCount; - ASSERT(!BooleanFlagOn(pFCB->Flags, FCB_IS_FAT)); ASSERT(pFCB != pVCB->VolumeFcb && !BooleanFlagOn(pFCB->Flags, FCB_IS_VOLUME)); ASSERT(pFCB->RefCount > 0); @@ -372,16 +372,15 @@ _vfatReleaseFCB( if (RefCount == 1 && BooleanFlagOn(pFCB->Flags, FCB_CACHE_INITIALIZED)) { - PFILE_OBJECT tmpFileObject; tmpFileObject = pFCB->FileObject; pFCB->FileObject = NULL; CcUninitializeCacheMap(tmpFileObject, NULL, NULL); ClearFlag(pFCB->Flags, FCB_CACHE_INITIALIZED); ObDereferenceObject(tmpFileObject); + tmpFcb = NULL; } - - if (RefCount == 0) + else if (RefCount == 0) { ASSERT(pFCB->OpenHandleCount == 0); tmpFcb = pFCB->parentFcb;