Author: sginsberg Date: Fri Aug 21 20:57:19 2015 New Revision: 68790
URL: http://svn.reactos.org/svn/reactos?rev=68790&view=rev Log: - Fix a "clever" check in KdpDeleteBreakpointRange that made the routine unable to delete more than one breakpoint in the specified range.
Modified: trunk/reactos/ntoskrnl/kd64/kdbreak.c
Modified: trunk/reactos/ntoskrnl/kd64/kdbreak.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/kd64/kdbreak.c?rev... ============================================================================== --- trunk/reactos/ntoskrnl/kd64/kdbreak.c [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/kd64/kdbreak.c [iso-8859-1] Fri Aug 21 20:57:19 2015 @@ -206,7 +206,10 @@ IN PVOID Limit) { ULONG BpIndex; - BOOLEAN Return = FALSE; + BOOLEAN DeletedBreakpoints; + + /* Assume no breakpoints will be deleted */ + DeletedBreakpoints = FALSE;
/* Loop the breakpoint table */ for (BpIndex = 0; BpIndex < KD_BREAKPOINT_MAX; BpIndex++) @@ -216,13 +219,13 @@ ((KdpBreakpointTable[BpIndex].Address >= Base) && (KdpBreakpointTable[BpIndex].Address <= Limit))) { - /* Delete it */ - Return = Return || KdpDeleteBreakpoint(BpIndex + 1); - } - } - - /* Return to caller */ - return Return; + /* Delete it, and remember if we succeeded at least once */ + if (KdpDeleteBreakpoint(BpIndex + 1)) DeletedBreakpoints = TRUE; + } + } + + /* Return whether we deleted anything */ + return DeletedBreakpoints; }
VOID