mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-13 09:49:22 +02:00
IDE: fixed crash when mapping old lpl files to new lpl files, bug #29127
git-svn-id: trunk@50563 -
This commit is contained in:
parent
5da9a99e13
commit
2cc0991827
@ -474,7 +474,7 @@ var
|
|||||||
CurPkgLink, OldPkgLink, OtherPkgLink: TPackageLink;
|
CurPkgLink, OldPkgLink, OtherPkgLink: TPackageLink;
|
||||||
sl: TStringListUTF8;
|
sl: TStringListUTF8;
|
||||||
LPLFilename: String;
|
LPLFilename: String;
|
||||||
LPKFilename: string;
|
LPKFilename, LazDir: string;
|
||||||
Files: TStrings;
|
Files: TStrings;
|
||||||
i: Integer;
|
i: Integer;
|
||||||
OldNode, OtherNode: TAvgLvlTreeNode;
|
OldNode, OtherNode: TAvgLvlTreeNode;
|
||||||
@ -498,6 +498,7 @@ begin
|
|||||||
GlobalLinksDir:=GetGlobalLinkDirectory;
|
GlobalLinksDir:=GetGlobalLinkDirectory;
|
||||||
|
|
||||||
CodeToolBoss.DirectoryCachePool.GetListing(GlobalLinksDir,Files,false);
|
CodeToolBoss.DirectoryCachePool.GetListing(GlobalLinksDir,Files,false);
|
||||||
|
LazDir:=EnvironmentOptions.GetParsedLazarusDirectory;
|
||||||
for i:=0 to Files.Count-1 do begin
|
for i:=0 to Files.Count-1 do begin
|
||||||
LPLFilename:=GlobalLinksDir+Files[i];
|
LPLFilename:=GlobalLinksDir+Files[i];
|
||||||
if CompareFileExt(LPLFilename,'lpl')<>0 then continue;
|
if CompareFileExt(LPLFilename,'lpl')<>0 then continue;
|
||||||
@ -535,10 +536,10 @@ begin
|
|||||||
CurPkgLink.Name:=NewPkgName;
|
CurPkgLink.Name:=NewPkgName;
|
||||||
CurPkgLink.Version.Assign(PkgVersion);
|
CurPkgLink.Version.Assign(PkgVersion);
|
||||||
IDEMacros.SubstituteMacros(LPKFilename);
|
IDEMacros.SubstituteMacros(LPKFilename);
|
||||||
//debugln(['TPackageLinks.UpdateGlobalLinks EnvironmentOptions.LazarusDirectory=',EnvironmentOptions.LazarusDirectory]);
|
//debugln(['TPackageLinks.UpdateGlobalLinks EnvironmentOptions.LazarusDirectory=',LazDir]);
|
||||||
LPKFilename:=TrimFilename(LPKFilename);
|
LPKFilename:=TrimFilename(LPKFilename);
|
||||||
if (FileIsInDirectory(LPKFilename,EnvironmentOptions.GetParsedLazarusDirectory)) then
|
if (FileIsInDirectory(LPKFilename,LazDir)) then
|
||||||
LPKFilename:=CreateRelativePath(LPKFilename,EnvironmentOptions.GetParsedLazarusDirectory);
|
LPKFilename:=CreateRelativePath(LPKFilename,LazDir);
|
||||||
CurPkgLink.LPKFilename:=LPKFilename;
|
CurPkgLink.LPKFilename:=LPKFilename;
|
||||||
//debugln('TPackageLinks.UpdateGlobalLinks PkgName="',CurPkgLink.Name,'" ',
|
//debugln('TPackageLinks.UpdateGlobalLinks PkgName="',CurPkgLink.Name,'" ',
|
||||||
// ' PkgVersion=',CurPkgLink.Version.AsString,
|
// ' PkgVersion=',CurPkgLink.Version.AsString,
|
||||||
@ -550,7 +551,7 @@ begin
|
|||||||
// keep LastUsed date for global link
|
// keep LastUsed date for global link
|
||||||
OldPkgLink:=TPackageLink(OldNode.Data);
|
OldPkgLink:=TPackageLink(OldNode.Data);
|
||||||
CurPkgLink.LastUsed:=OldPkgLink.LastUsed;
|
CurPkgLink.LastUsed:=OldPkgLink.LastUsed;
|
||||||
UnmappedGlobalLinks.Remove(OldPkgLink);
|
UnmappedGlobalLinks.Delete(OldNode);
|
||||||
MappedGlobalLinks.Add(OldPkgLink);
|
MappedGlobalLinks.Add(OldPkgLink);
|
||||||
//if CompareText(OldPkgLink.Name,'lclbase')=0 then
|
//if CompareText(OldPkgLink.Name,'lclbase')=0 then
|
||||||
// debugln(['TPackageLinks.UpdateGlobalLinks keeping LastUsed of '+OldPkgLink.Name,' ',DateToCfgStr(OldPkgLink.LastUsed,DateTimeAsCfgStrFormat)]);
|
// debugln(['TPackageLinks.UpdateGlobalLinks keeping LastUsed of '+OldPkgLink.Name,' ',DateToCfgStr(OldPkgLink.LastUsed,DateTimeAsCfgStrFormat)]);
|
||||||
@ -582,9 +583,10 @@ begin
|
|||||||
if CompareText(OtherPkgLink.Name,OldPkgLink.Name)<>0 then break;
|
if CompareText(OtherPkgLink.Name,OldPkgLink.Name)<>0 then break;
|
||||||
OtherNode:=FGlobalLinks.FindSuccessor(OtherNode);
|
OtherNode:=FGlobalLinks.FindSuccessor(OtherNode);
|
||||||
if MappedGlobalLinks.Find(OtherPkgLink)<>nil then continue;
|
if MappedGlobalLinks.Find(OtherPkgLink)<>nil then continue;
|
||||||
// found a new lpl without an old lpl
|
// found a new lpl for the old lpl
|
||||||
MappedGlobalLinks.Remove(OldPkgLink);
|
if not UnmappedGlobalLinks.Remove(OldPkgLink) then
|
||||||
UnmappedGlobalLinks.Add(OldPkgLink);
|
debugln(['TPackageLinks.UpdateGlobalLinks inconsistency UnmappedGlobalLinks.Remove']);
|
||||||
|
MappedGlobalLinks.Add(OldPkgLink);
|
||||||
if OtherPkgLink.LastUsed<OldPkgLink.LastUsed then begin
|
if OtherPkgLink.LastUsed<OldPkgLink.LastUsed then begin
|
||||||
debugln(['Hint: (lazarus) [TPackageLinks.UpdateGlobalLinks] using LastUsed date of '+OldPkgLink.IDAsString+' for new '+OtherPkgLink.IDAsString+' in '+OtherPkgLink.LPKFilename]);
|
debugln(['Hint: (lazarus) [TPackageLinks.UpdateGlobalLinks] using LastUsed date of '+OldPkgLink.IDAsString+' for new '+OtherPkgLink.IDAsString+' in '+OtherPkgLink.LPKFilename]);
|
||||||
OtherPkgLink.LastUsed:=OldPkgLink.LastUsed;
|
OtherPkgLink.LastUsed:=OldPkgLink.LastUsed;
|
||||||
|
Loading…
Reference in New Issue
Block a user