Error when TIniFile is released and Encoding is set
Original Reporter info from Mantis: rummel.b
-
Reporter name: Bernd Rummel
Description:
procedure openIni;
var
ini: TIniFile;
begin
ini := TIniFile.Create('test.ini',TMBCSEncoding.Create(850)); // test.ini must exist
ini.Free; // => exception
end;
Additional information:
inifiles.pp
procedure TIniFile.ReadIniValues;
var
slLines: TStringList;
begin
FSectionList.Clear;
if FileExists(FFileName) then
begin
slLines := TStringList.Create;
try
// read the ini file values
if FEncoding=nil then
slLines.LoadFromFile(FFileName)
else
begin
slLines.DefaultEncoding := FEncoding; // slLines clone Encoding
slLines.LoadFromFile(FFileName, nil);
if FEncoding <> slLines.Encoding then
begin
if FOwnsEncoding then
FEncoding.Free;
FEncoding := slLines.Encoding; // Copy Encoding
FOwnsEncoding := not TEncoding.IsStandardEncoding(FEncoding);
end;
end;
FillSectionList(slLines); // slLines free Encoding => Self.FEncoding is freed => Exception on destroy
finally
slLines.Free;
end;
end;
end;
Mantis conversion info:
-
Mantis ID: 36052
-
Build: svn trunk revision 4291
-
Version: 3.3.1
-
Fixed in version: 3.3.1
-
Fixed in revision: 42932 (#0bbe319d), 43938 (#af98f78c)
-
Target version: 3.2.0