- Fix a "clever" check in KdpDeleteBreakpointRange that made the routine unable to delete more than one breakpoint in the specified range.

svn path=/trunk/; revision=68790
This commit is contained in:
Stefan Ginsberg 2015-08-21 20:57:19 +00:00
parent e816df8cd0
commit ca5361525f

View file

@ -206,7 +206,10 @@ KdpDeleteBreakpointRange(IN PVOID Base,
IN PVOID Limit) IN PVOID Limit)
{ {
ULONG BpIndex; ULONG BpIndex;
BOOLEAN Return = FALSE; BOOLEAN DeletedBreakpoints;
/* Assume no breakpoints will be deleted */
DeletedBreakpoints = FALSE;
/* Loop the breakpoint table */ /* Loop the breakpoint table */
for (BpIndex = 0; BpIndex < KD_BREAKPOINT_MAX; BpIndex++) for (BpIndex = 0; BpIndex < KD_BREAKPOINT_MAX; BpIndex++)
@ -216,13 +219,13 @@ KdpDeleteBreakpointRange(IN PVOID Base,
((KdpBreakpointTable[BpIndex].Address >= Base) && ((KdpBreakpointTable[BpIndex].Address >= Base) &&
(KdpBreakpointTable[BpIndex].Address <= Limit))) (KdpBreakpointTable[BpIndex].Address <= Limit)))
{ {
/* Delete it */ /* Delete it, and remember if we succeeded at least once */
Return = Return || KdpDeleteBreakpoint(BpIndex + 1); if (KdpDeleteBreakpoint(BpIndex + 1)) DeletedBreakpoints = TRUE;
} }
} }
/* Return to caller */ /* Return whether we deleted anything */
return Return; return DeletedBreakpoints;
} }
VOID VOID