diff --git a/components/fpdebug/fpdbgdisasx86.pp b/components/fpdebug/fpdbgdisasx86.pp index 5c8d9a8dfb..5a8462a089 100644 --- a/components/fpdebug/fpdbgdisasx86.pp +++ b/components/fpdebug/fpdbgdisasx86.pp @@ -5695,7 +5695,7 @@ var var MaxAddr, StartStack, Tmp: TDBGPtr; - BackwardJumpAddress: TAlternativeAddressPoint; + BackwardJumpAddress, ForwardJumpAddress: TAlternativeAddressPoint; Cnt: Integer; instr: TX86AsmInstruction; RSize: Cardinal; @@ -5711,6 +5711,7 @@ begin StartStack := AStackPtr; CurConditionalForwardAddr := -1; BackwardJumpAddress.Address := 0; + ForwardJumpAddress.Address := 0; WeakResultAddress := 0; try @@ -5746,6 +5747,13 @@ begin ContinueAt(BackwardJumpAddress); BackwardJumpAddress.Address := 0; end + else + if (ForwardJumpAddress.Address > 0) and (not AddrWasDone(ForwardJumpAddress.Address)) then begin + ContinueAt(ForwardJumpAddress); + ForwardJumpAddress.Address := 0; + MaxAddr := NewAddr + MAX_SEARCH_ADDR; + MaxAddrCurrentBlock := MaxAddr; + end else exit; StartNextAddrBlock; @@ -6182,6 +6190,13 @@ begin continue; end; + if Tmp > MaxAddr then begin + if (ForwardJumpAddress.Address = 0) or (Tmp < ForwardJumpAddress.Address) then + StoreAltAddr(ForwardJumpAddress, Tmp); + ForceDifferentBranch := True; + continue; + end; + FinishCurAddrBlock; NewAddr := Tmp; StartNextAddrBlock;