mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-17 19:39:18 +02:00
fixed GatherUnitFiles and implemented DirectoryAlreadySearched
git-svn-id: trunk@8551 -
This commit is contained in:
parent
a0733fde8c
commit
2499a88ad8
@ -3161,11 +3161,12 @@ function GatherUnitFiles(const BaseDir, SearchPath,
|
||||
// CaseInsensitive: true to ignore case on comparing extensions
|
||||
// TreeOfUnitFiles: tree of TUnitFileInfo
|
||||
var
|
||||
SearchedDirectories: TAVLTree; // tree of PAnsiString
|
||||
SearchedDirectories: TAVLTree; // tree of AnsiString
|
||||
|
||||
function DirectoryAlreadySearched(const ADirectory: string): boolean;
|
||||
begin
|
||||
Result:=false;
|
||||
Result:=(SearchedDirectories<>nil)
|
||||
and (SearchedDirectories.Find(Pointer(ADirectory))<>nil);
|
||||
end;
|
||||
|
||||
procedure MarkDirectoryAsSearched(const ADirectory: string);
|
||||
@ -3173,11 +3174,12 @@ var
|
||||
s: String;
|
||||
begin
|
||||
// increase refcount
|
||||
s:=ADirectory;
|
||||
//DebugLn('MarkDirectoryAsSearched ',ADirectory);
|
||||
s:=ADirectory; // increase refcount
|
||||
if SearchedDirectories=nil then
|
||||
SearchedDirectories:=TAVLTree.Create(@ComparePAnsiStringFilenames);
|
||||
SearchedDirectories.Add(@s);
|
||||
Pointer(s):=nil;
|
||||
SearchedDirectories:=TAVLTree.Create(@CompareAnsiStringFilenames);
|
||||
SearchedDirectories.Add(Pointer(s));
|
||||
Pointer(s):=nil; // keep refcount
|
||||
end;
|
||||
|
||||
procedure FreeSearchedDirectories;
|
||||
@ -3190,6 +3192,7 @@ var
|
||||
ANode:=SearchedDirectories.FindLowest;
|
||||
while ANode<>nil do begin
|
||||
Pointer(s):=ANode.Data;
|
||||
//DebugLn('FreeSearchedDirectories ',s);
|
||||
s:=''; // decrease refcount
|
||||
ANode:=SearchedDirectories.FindSuccessor(ANode);
|
||||
end;
|
||||
|
@ -84,7 +84,7 @@ function ClearFile(const Filename: string; RaiseOnError: boolean): boolean;
|
||||
function GetTempFilename(const Path, Prefix: string): string;
|
||||
function FindDiskFilename(const Filename: string): string;
|
||||
|
||||
function ComparePAnsiStringFilenames(Data1, data2: Pointer): integer;
|
||||
function CompareAnsiStringFilenames(Data1, data2: Pointer): integer;
|
||||
|
||||
type
|
||||
TCTPascalExtType = (petNone, petPAS, petPP, petP);
|
||||
@ -367,14 +367,18 @@ begin
|
||||
until StartPos>length(Result);
|
||||
end;
|
||||
|
||||
function ComparePAnsiStringFilenames(Data1, data2: Pointer): integer;
|
||||
function CompareAnsiStringFilenames(Data1, data2: Pointer): integer;
|
||||
var
|
||||
s1: String;
|
||||
s2: String;
|
||||
begin
|
||||
s1:=PAnsiString(Data1)^;
|
||||
s2:=PAnsiString(Data1)^;
|
||||
s1:='';
|
||||
s2:='';
|
||||
Pointer(s1):=Data1;
|
||||
Pointer(s2):=Data2;
|
||||
Result:=CompareFilenames(s1,s2);
|
||||
Pointer(s1):=nil;
|
||||
Pointer(s2):=nil;
|
||||
end;
|
||||
|
||||
function CompareFilenames(const Filename1, Filename2: string): integer;
|
||||
|
Loading…
Reference in New Issue
Block a user