SynEdit, Highlighter: fix an issue with pchar (read only) to no longer allocated string

git-svn-id: trunk@30096 -
This commit is contained in:
martin 2011-03-31 10:03:53 +00:00
parent 3c48e02f12
commit 9ecc3e5d91
17 changed files with 19 additions and 3 deletions

View File

@ -1252,9 +1252,7 @@ begin
ResetRange ResetRange
else else
SetRange(FCurrentRanges[LineNumber - 1]); SetRange(FCurrentRanges[LineNumber - 1]);
// Keep a copy of the line text, since some highlighters just use a PChar pointer to it. SetLine(CurrentLines[LineNumber], LineNumber);
FLineText := CurrentLines[LineNumber];
SetLine(FLineText, LineNumber);
end; end;
procedure TSynCustomHighlighter.ResetRange; procedure TSynCustomHighlighter.ResetRange;
@ -1263,6 +1261,8 @@ end;
procedure TSynCustomHighlighter.SetLine(const NewValue: String; LineNumber: Integer); procedure TSynCustomHighlighter.SetLine(const NewValue: String; LineNumber: Integer);
begin begin
// Keep a copy of the line text, since some highlighters just use a PChar pointer to it.
FLineText := NewValue;
FIsInNextToEOL := False; FIsInNextToEOL := False;
FLineIndex := LineNumber; FLineIndex := LineNumber;
end; end;

View File

@ -468,6 +468,7 @@ end; { Destroy }
procedure TSynAnySyn.SetLine(const NewValue: String; LineNumber:Integer); procedure TSynAnySyn.SetLine(const NewValue: String; LineNumber:Integer);
begin begin
inherited;
fLine := PChar(NewValue); fLine := PChar(NewValue);
Run := 0; Run := 0;
fLineNumber := LineNumber; fLineNumber := LineNumber;

View File

@ -417,6 +417,7 @@ end;
procedure TSynBatSyn.SetLine({$IFDEF FPC}const {$ENDIF}NewValue: String; LineNumber: Integer); procedure TSynBatSyn.SetLine({$IFDEF FPC}const {$ENDIF}NewValue: String; LineNumber: Integer);
begin begin
inherited;
fLine := PChar(NewValue); fLine := PChar(NewValue);
Run := 0; Run := 0;
fEcho := False; fEcho := False;

View File

@ -812,6 +812,7 @@ end; { Create }
procedure TSynCppSyn.SetLine(const NewValue: String; LineNumber:Integer); procedure TSynCppSyn.SetLine(const NewValue: String; LineNumber:Integer);
begin begin
inherited;
fLine := PChar(NewValue); fLine := PChar(NewValue);
Run := 0; Run := 0;
fLineNumber := LineNumber; fLineNumber := LineNumber;

View File

@ -1473,6 +1473,7 @@ end;
procedure TSynCssSyn.SetLine({$IFDEF FPC}const {$ENDIF}NewValue: String; LineNumber: Integer); procedure TSynCssSyn.SetLine({$IFDEF FPC}const {$ENDIF}NewValue: String; LineNumber: Integer);
begin begin
inherited;
fLine := PChar(NewValue); fLine := PChar(NewValue);
Run := 0; Run := 0;
fLineNumber := LineNumber; fLineNumber := LineNumber;

View File

@ -193,6 +193,7 @@ end; { Create }
procedure TSynIniSyn.SetLine({$IFDEF FPC}const {$ENDIF}NewValue: String; LineNumber:Integer); procedure TSynIniSyn.SetLine({$IFDEF FPC}const {$ENDIF}NewValue: String; LineNumber:Integer);
begin begin
inherited;
fLine := PChar(NewValue); fLine := PChar(NewValue);
Run := 0; Run := 0;
fLineNumber := LineNumber; fLineNumber := LineNumber;

View File

@ -693,6 +693,7 @@ end; { Create }
procedure TSynJavaSyn.SetLine({$IFDEF FPC}const {$ENDIF}NewValue: String; procedure TSynJavaSyn.SetLine({$IFDEF FPC}const {$ENDIF}NewValue: String;
LineNumber:Integer); LineNumber:Integer);
begin begin
inherited;
fLine := PChar(NewValue); fLine := PChar(NewValue);
Run := 0; Run := 0;
fEol := False; fEol := False;

View File

@ -1537,6 +1537,7 @@ end;
procedure TSynJScriptSyn.SetLine({$IFDEF FPC}const {$ENDIF}NewValue: String; LineNumber: Integer); procedure TSynJScriptSyn.SetLine({$IFDEF FPC}const {$ENDIF}NewValue: String; LineNumber: Integer);
begin begin
inherited;
fLine := PChar(NewValue); fLine := PChar(NewValue);
Run := 0; Run := 0;
fLineNumber := LineNumber; fLineNumber := LineNumber;

View File

@ -1488,6 +1488,7 @@ var
i: Integer; i: Integer;
begin begin
if IsScanning then exit; if IsScanning then exit;
inherited;
FCurLineIndex := LineNumber; FCurLineIndex := LineNumber;
FLine := NewValue; FLine := NewValue;

View File

@ -2039,6 +2039,7 @@ end; { Create }
procedure TSynPerlSyn.SetLine({$IFDEF FPC}const {$ENDIF}NewValue: String; procedure TSynPerlSyn.SetLine({$IFDEF FPC}const {$ENDIF}NewValue: String;
LineNumber:Integer); LineNumber:Integer);
begin begin
inherited;
fLine := PChar(NewValue); fLine := PChar(NewValue);
Run := 0; Run := 0;
fLineNumber := LineNumber; fLineNumber := LineNumber;

View File

@ -696,6 +696,7 @@ end;
procedure TSynPHPSyn.SetLine({$IFDEF FPC}const {$ENDIF}NewValue: String; LineNumber: Integer); procedure TSynPHPSyn.SetLine({$IFDEF FPC}const {$ENDIF}NewValue: String; LineNumber: Integer);
begin begin
inherited;
fLine := PChar(NewValue); fLine := PChar(NewValue);
{$IFDEF SYN_LAZARUS} {$IFDEF SYN_LAZARUS}
fLineLen := length(NewValue); fLineLen := length(NewValue);

View File

@ -263,6 +263,7 @@ procedure TSynPositionHighlighter.SetLine(const NewValue: string;
var var
p: PPositionTokens; p: PPositionTokens;
begin begin
inherited;
fLine := NewValue; fLine := NewValue;
fLineLen := length(fLine); fLineLen := length(fLine);
fLineNumber := LineNumber; fLineNumber := LineNumber;

View File

@ -479,6 +479,7 @@ end;
procedure TSynPythonSyn.SetLine({$IFDEF FPC}const {$ENDIF}NewValue: string; procedure TSynPythonSyn.SetLine({$IFDEF FPC}const {$ENDIF}NewValue: string;
LineNumber: Integer); LineNumber: Integer);
begin begin
inherited;
fLine := PChar(NewValue); fLine := PChar(NewValue);
Run := 0; Run := 0;
fLineNumber := LineNumber; fLineNumber := LineNumber;

View File

@ -1110,6 +1110,7 @@ end;
procedure TSynSQLSyn.SetLine({$IFDEF FPC}const {$ENDIF}NewValue: string; LineNumber: Integer); procedure TSynSQLSyn.SetLine({$IFDEF FPC}const {$ENDIF}NewValue: string; LineNumber: Integer);
begin begin
inherited;
fLine := PChar(NewValue); fLine := PChar(NewValue);
Run := 0; Run := 0;
fLineNumber := LineNumber; fLineNumber := LineNumber;

View File

@ -207,6 +207,7 @@ end; { Create }
procedure TSynTeXSyn.SetLine({$IFDEF FPC}const {$ENDIF}NewValue: String; LineNumber:Integer); procedure TSynTeXSyn.SetLine({$IFDEF FPC}const {$ENDIF}NewValue: String; LineNumber:Integer);
begin begin
inherited;
fLine := PChar(NewValue); fLine := PChar(NewValue);
Run := 0; Run := 0;
fLineNumber := LineNumber; fLineNumber := LineNumber;

View File

@ -354,6 +354,7 @@ procedure TSynUNIXShellScriptSyn.SetLine(
{$IFDEF FPC}const {$ENDIF}NewValue: String; {$IFDEF FPC}const {$ENDIF}NewValue: String;
LineNumber:Integer); LineNumber:Integer);
begin begin
inherited;
fLine := PChar(NewValue); fLine := PChar(NewValue);
Run := 0; Run := 0;
fLineNumber := LineNumber; fLineNumber := LineNumber;

View File

@ -1053,6 +1053,7 @@ end;
procedure TSynVBSyn.SetLine({$IFDEF FPC}const {$ENDIF}NewValue: String; LineNumber: Integer); procedure TSynVBSyn.SetLine({$IFDEF FPC}const {$ENDIF}NewValue: String; LineNumber: Integer);
begin begin
inherited;
fLine := PChar(NewValue); fLine := PChar(NewValue);
Run := 0; Run := 0;
fLineNumber := LineNumber; fLineNumber := LineNumber;