summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
ebe9e0b)
In RxRemoveNameNetFcb(), check if name was already removed. MS doesn't do this, but as we use double linked-list macros
that perform extra sanity checks, this is required. This can be called twice for a single FCB.
CORE-11327
CORE-13632
CORE-13636
svn path=/trunk/; revision=75480
ASSERT(RxIsFcbTableLockExclusive(&NetRoot->FcbTable));
ASSERT(RxIsFcbAcquiredExclusive(ThisFcb));
ASSERT(RxIsFcbTableLockExclusive(&NetRoot->FcbTable));
ASSERT(RxIsFcbAcquiredExclusive(ThisFcb));
- RxFcbTableRemoveFcb(&NetRoot->FcbTable, ThisFcb);
- DPRINT("FCB (%p) %wZ removed\n", ThisFcb, &ThisFcb->FcbTableEntry.Path);
- /* Mark, so that we don't try to do it twice */
- SetFlag(ThisFcb->FcbState, FCB_STATE_NAME_ALREADY_REMOVED);
+#ifdef __REACTOS__
+ if (!BooleanFlagOn(ThisFcb->FcbState, FCB_STATE_NAME_ALREADY_REMOVED))
+ {
+#endif
+ RxFcbTableRemoveFcb(&NetRoot->FcbTable, ThisFcb);
+ DPRINT("FCB (%p) %wZ removed\n", ThisFcb, &ThisFcb->FcbTableEntry.Path);
+ /* Mark, so that we don't try to do it twice */
+ SetFlag(ThisFcb->FcbState, FCB_STATE_NAME_ALREADY_REMOVED);
+#ifdef __REACTOS__
+ }
+#endif