* Now calls "ResetResourceTables" on unit finalization if gettext has been

used. This enabled programs using gettext to use heaptrc, which reported
  memory leaks for the translated strings until now.
This commit is contained in:
sg 2000-02-17 22:14:51 +00:00
parent a28805266d
commit 40f86868cc

View File

@ -79,6 +79,10 @@ implementation
uses dos; uses dos;
var
GettextUsed: Boolean;
constructor TMOFile.Create(AStream: TStream); constructor TMOFile.Create(AStream: TStream);
var var
header: TMOFileHeader; header: TMOFileHeader;
@ -92,13 +96,6 @@ begin
if header.magic <> MOFileHeaderMagic then if header.magic <> MOFileHeaderMagic then
raise EMOFileError.Create('Invalid magic - not a MO file?'); raise EMOFileError.Create('Invalid magic - not a MO file?');
{ WriteLn('Revision: ', header.revision);
WriteLn('# of strings: ', header.nstrings);
WriteLn('OrigTabOffset: ', header.OrigTabOffset);
WriteLn('TransTabOffset: ', header.TransTabOffset);
WriteLn('# of hashcodes: ', header.HashTabSize);
WriteLn('HashTabOffset: ', header.HashTabOffset);
}
GetMem(OrigTable, header.nstrings * SizeOf(TMOStringInfo)); GetMem(OrigTable, header.nstrings * SizeOf(TMOStringInfo));
GetMem(TranslTable, header.nstrings * SizeOf(TMOStringInfo)); GetMem(TranslTable, header.nstrings * SizeOf(TMOStringInfo));
GetMem(OrigStrings, header.nstrings * SizeOf(PChar)); GetMem(OrigStrings, header.nstrings * SizeOf(PChar));
@ -239,8 +236,10 @@ begin
for j := 0 to count - 1 do begin for j := 0 to count - 1 do begin
s := AFile.Translate(GetResourceStringDefaultValue(i, j), s := AFile.Translate(GetResourceStringDefaultValue(i, j),
GetResourceStringHash(i, j)); GetResourceStringHash(i, j));
if Length(s) > 0 then if Length(s) > 0 then begin
SetResourceStringValue(i, j, s); SetResourceStringValue(i, j, s);
GettextUsed := True;
end;
end; end;
end; end;
end; end;
@ -264,12 +263,20 @@ begin
end; end;
end; end;
finalization
if GettextUsed then
ResetResourceTables;
end. end.
{ {
$Log$ $Log$
Revision 1.9 2000-01-30 22:16:59 sg Revision 1.10 2000-02-17 22:14:51 sg
* Now calls "ResetResourceTables" on unit finalization if gettext has been
used. This enabled programs using gettext to use heaptrc, which reported
memory leaks for the translated strings until now.
Revision 1.9 2000/01/30 22:16:59 sg
* Fixed memory leaks * Fixed memory leaks
Revision 1.8 2000/01/07 01:24:33 peter Revision 1.8 2000/01/07 01:24:33 peter