From 52ff281c9f41fb05e3a23fe6e4d580e1428c755e Mon Sep 17 00:00:00 2001 From: Basile Burg Date: Tue, 18 Dec 2018 18:06:17 +0100 Subject: [PATCH] fix range error when finding call tip origin --- src/ce_synmemo.pas | 47 +++++++++++++++++++++++++--------------------- 1 file changed, 26 insertions(+), 21 deletions(-) diff --git a/src/ce_synmemo.pas b/src/ce_synmemo.pas index 450f3db3..c18dcbfe 100644 --- a/src/ce_synmemo.pas +++ b/src/ce_synmemo.pas @@ -2647,30 +2647,35 @@ begin i -= TabWidth else i -= 1; + if i <= 0 then + break; end; - DcdWrapper.getCallTip(str); - i := fCallTipStrings.Count; - if (fCallTipStrings.Count <> 0) and str.isNotEmpty then - fCallTipStrings.Insert(0, '---'); - fCallTipStrings.Insert(0, str); - i := fCallTipStrings.Count - i; - // overload count to delete on ')' - {$PUSH}{$HINTS OFF}{$WARNINGS OFF} - fCallTipStrings.Objects[0] := TObject(pointer(i)); - {$POP} - str := ''; - for lne in fCallTipStrings do - if lne.isNotEmpty then - str += lne + LineEnding; - if str.isNotEmpty then + if i > 0 then begin - {$IFDEF WINDOWS} - str := str[1..str.length-2]; - {$ELSE} - str := str[1..str.length-1]; - {$ENDIF} - showCallTipsString(str, j); + DcdWrapper.getCallTip(str); + i := fCallTipStrings.Count; + if (fCallTipStrings.Count <> 0) and str.isNotEmpty then + fCallTipStrings.Insert(0, '---'); + fCallTipStrings.Insert(0, str); + i := fCallTipStrings.Count - i; + // overload count to delete on ')' + {$PUSH}{$HINTS OFF}{$WARNINGS OFF} + fCallTipStrings.Objects[0] := TObject(pointer(i)); + {$POP} + str := ''; + for lne in fCallTipStrings do + if lne.isNotEmpty then + str += lne + LineEnding; + if str.isNotEmpty then + begin + {$IFDEF WINDOWS} + str := str[1..str.length-2]; + {$ELSE} + str := str[1..str.length-1]; + {$ENDIF} + showCallTipsString(str, j); + end; end; if findOpenParen then