mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-21 02:40:13 +02:00
IDE: Prevent Access violation in Search result view when exception was raised by search. Issue #37124
git-svn-id: branches/fixes_2_0@63477 -
This commit is contained in:
parent
3f6a879586
commit
981a213c56
@ -127,7 +127,6 @@ type
|
|||||||
property UpdateItems: TStrings read fUpdateStrings write fUpdateStrings;
|
property UpdateItems: TStrings read fUpdateStrings write fUpdateStrings;
|
||||||
property Updating: boolean read fUpdating;
|
property Updating: boolean read fUpdating;
|
||||||
property Skipped: integer read FSkipped write SetSkipped;
|
property Skipped: integer read FSkipped write SetSkipped;
|
||||||
property Items;
|
|
||||||
function ItemsAsStrings: TStrings;
|
function ItemsAsStrings: TStrings;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -1122,7 +1121,7 @@ begin
|
|||||||
//enter a new file entry
|
//enter a new file entry
|
||||||
if not Assigned(Node) then
|
if not Assigned(Node) then
|
||||||
begin
|
begin
|
||||||
Node := Items.Add(Node, MatchPos.FileName);
|
Node := Items.Add(Nil, MatchPos.FileName);
|
||||||
fFilenameToNode.Add(Node);
|
fFilenameToNode.Add(Node);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -1139,28 +1138,26 @@ begin
|
|||||||
inherited Create(AOwner);
|
inherited Create(AOwner);
|
||||||
ReadOnly := True;
|
ReadOnly := True;
|
||||||
fSearchObject:= TLazSearch.Create;
|
fSearchObject:= TLazSearch.Create;
|
||||||
|
fUpdateStrings:= TStringList.Create;
|
||||||
|
fFilenameToNode:=TAvlTree.Create(@CompareTVNodeTextAsFilename);
|
||||||
fUpdating:= false;
|
fUpdating:= false;
|
||||||
fUpdateCount:= 0;
|
fUpdateCount:= 0;
|
||||||
fUpdateStrings:= TStringList.Create;
|
|
||||||
FSearchInListPhrases := '';
|
FSearchInListPhrases := '';
|
||||||
fFiltered := False;
|
fFiltered := False;
|
||||||
fFilenameToNode:=TAvlTree.Create(@CompareTVNodeTextAsFilename);
|
|
||||||
end;//Create
|
end;//Create
|
||||||
|
|
||||||
Destructor TLazSearchResultTV.Destroy;
|
Destructor TLazSearchResultTV.Destroy;
|
||||||
begin
|
begin
|
||||||
fFilenameToNode.Free;
|
|
||||||
if Assigned(fSearchObject) then
|
if Assigned(fSearchObject) then
|
||||||
FreeAndNil(fSearchObject);
|
FreeAndNil(fSearchObject);
|
||||||
//if UpdateStrings is empty, the objects are stored in Items due to filtering
|
//if UpdateStrings is empty, the objects are stored in Items due to filtering
|
||||||
//filtering clears UpdateStrings
|
//filtering clears UpdateStrings
|
||||||
if (fUpdateStrings.Count = 0) then
|
if (fUpdateStrings.Count = 0) then
|
||||||
FreeObjectsTN(Items);
|
FreeObjectsTN(Items);
|
||||||
if Assigned(fUpdateStrings) then
|
fFilenameToNode.Free;
|
||||||
begin
|
Assert(Assigned(fUpdateStrings), 'fUpdateStrings = Nil');
|
||||||
FreeObjects(fUpdateStrings);
|
FreeObjects(fUpdateStrings);
|
||||||
FreeAndNil(fUpdateStrings);
|
FreeAndNil(fUpdateStrings);
|
||||||
end;
|
|
||||||
inherited Destroy;
|
inherited Destroy;
|
||||||
end;//Destroy
|
end;//Destroy
|
||||||
|
|
||||||
@ -1284,10 +1281,8 @@ var i: Integer;
|
|||||||
begin
|
begin
|
||||||
if (slItems.Count <= 0) then Exit;
|
if (slItems.Count <= 0) then Exit;
|
||||||
for i:=0 to slItems.Count-1 do
|
for i:=0 to slItems.Count-1 do
|
||||||
begin
|
|
||||||
if Assigned(slItems.Objects[i]) then
|
if Assigned(slItems.Objects[i]) then
|
||||||
slItems.Objects[i].Free;
|
slItems.Objects[i].Free;
|
||||||
end;//End for-loop
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TLazSearchResultTV.BeautifyLine(const Filename: string; X, Y: integer;
|
function TLazSearchResultTV.BeautifyLine(const Filename: string; X, Y: integer;
|
||||||
|
Loading…
Reference in New Issue
Block a user