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.c... ============================================================================== --- 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 }
/*