mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-15 23:39:24 +02:00
codetools: ReadAllLinks: stop after 12 levels
git-svn-id: trunk@30029 -
This commit is contained in:
parent
604d91db73
commit
61b1c28e3b
@ -120,8 +120,8 @@ function FindDiskFilename(const Filename: string): string;
|
||||
function GetDarwinSystemFilename(Filename: string): string;
|
||||
{$ENDIF}
|
||||
function ReadAllLinks(const Filename: string;
|
||||
ExceptionOnError: boolean): string;
|
||||
function TryReadAllLinks(const Filename: string): string;
|
||||
ExceptionOnError: boolean): string; // if a link is broken returns ''
|
||||
function TryReadAllLinks(const Filename: string): string; // if a link is broken returns Filename
|
||||
|
||||
function CompareAnsiStringFilenames(Data1, data2: Pointer): integer;
|
||||
function CompareFilenameOnly(Filename: PChar; FilenameLen: integer;
|
||||
@ -794,13 +794,16 @@ function ReadAllLinks(const Filename: string;
|
||||
var
|
||||
LinkFilename: string;
|
||||
AText: string;
|
||||
Depth: integer;
|
||||
{$ENDIF}
|
||||
begin
|
||||
Result:=Filename;
|
||||
{$IFDEF WINDOWS}
|
||||
|
||||
{$ELSE}
|
||||
repeat
|
||||
Depth:=0;
|
||||
while Depth<12 do begin
|
||||
inc(Depth);
|
||||
LinkFilename:=FpReadLink(Result);
|
||||
if LinkFilename='' then begin
|
||||
AText:='"'+Filename+'"';
|
||||
@ -831,7 +834,12 @@ begin
|
||||
else
|
||||
Result:=LinkFilename;
|
||||
end;
|
||||
until false;
|
||||
end;
|
||||
// probably an endless loop
|
||||
if ExceptionOnError then
|
||||
raise EFOpenError.Create('too many links, maybe an endless loop.')
|
||||
else
|
||||
Result:='';
|
||||
{$ENDIF}
|
||||
end;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user