Author: pschweitzer
Date: Fri Aug 4 19:05:11 2017
New Revision: 75480
URL:
http://svn.reactos.org/svn/reactos?rev=75480&view=rev
Log:
[RXCE]
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
Modified:
trunk/reactos/sdk/lib/drivers/rxce/rxce.c
Modified: trunk/reactos/sdk/lib/drivers/rxce/rxce.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/sdk/lib/drivers/rxce/rxce.…
==============================================================================
--- trunk/reactos/sdk/lib/drivers/rxce/rxce.c [iso-8859-1] (original)
+++ trunk/reactos/sdk/lib/drivers/rxce/rxce.c [iso-8859-1] Fri Aug 4 19:05:11 2017
@@ -7533,10 +7533,17 @@
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
}
/*