diff --git a/packager/packagedefs.pas b/packager/packagedefs.pas index 9072922402..bb6215c189 100644 --- a/packager/packagedefs.pas +++ b/packager/packagedefs.pas @@ -1301,6 +1301,7 @@ procedure TPkgFile.LoadFromXMLConfig(XMLConfig: TXMLConfig; const Path: string; FileVersion: integer; AdjustPathDelims: boolean); var AFilename: String; + CaseInsensitiveUnitName: String; begin if FileVersion=1 then ; Clear; @@ -1311,6 +1312,12 @@ begin FileType:=PkgFileTypeIdentToType(XMLConfig.GetValue(Path+'Type/Value','')); HasRegisterProc:=XMLConfig.GetValue(Path+'HasRegisterProc/Value',false); fUnitName:=XMLConfig.GetValue(Path+'UnitName/Value',''); + if FileType in PkgFileUnitTypes then begin + // make sure the unitname makes sense + CaseInsensitiveUnitName:=ExtractFileNameOnly(Filename); + if CompareText(fUnitName,CaseInsensitiveUnitName)<>0 then + fUnitName:=CaseInsensitiveUnitName; + end; end; procedure TPkgFile.SaveToXMLConfig(XMLConfig: TXMLConfig; const Path: string); diff --git a/packager/pkgmanager.pas b/packager/pkgmanager.pas index 6f2991099f..3b52684d05 100644 --- a/packager/pkgmanager.pas +++ b/packager/pkgmanager.pas @@ -2293,6 +2293,7 @@ var HeaderSrc: String; OutputDir: String; OldSrc: String; + CaseInsensitiveUnitName: String; begin {$IFDEF VerbosePkgCompile} writeln('TPkgManager.DoSavePackageMainSource A'); @@ -2324,7 +2325,7 @@ begin CurFile:=APackage.Files[i]; // update unitname if FilenameIsPascalUnit(CurFile.Filename) - and (CurFile.FileType in [pftUnit,pftVirtualUnit]) then begin + and (CurFile.FileType in PkgFileUnitTypes) then begin CodeBuffer:=CodeToolBoss.LoadFile(CurFile.Filename,false,false); if CodeBuffer<>nil then begin // if the unit is edited, the unitname is probably already cached @@ -2337,6 +2338,10 @@ begin CurFile.UnitName:=CurUnitName; end; CurUnitName:=CurFile.UnitName; + // make sure the unitname makes sense + CaseInsensitiveUnitName:=ExtractFileNameOnly(CurFile.Filename); + if SysUtils.CompareText(CurUnitName,CaseInsensitiveUnitName)<>0 then + CurUnitName:=CaseInsensitiveUnitName; if (CurUnitName<>'') and IsValidIdent(CurUnitName) then begin if UsedUnits<>'' then UsedUnits:=UsedUnits+', '; @@ -2346,6 +2351,10 @@ begin RegistrationCode:=RegistrationCode+ ' RegisterUnit('''+CurUnitName+''',@'+CurUnitName+'.Register);'+e; end; + end else begin + MessagesView.AddMsg('WARNING: unit name invalid '+CurFile.Filename + +', package='+APackage.IDAsString, + APackage.Directory); end; end; end;