fpg.TFPGMapObject free my object
Original Reporter info from Mantis: greenfil
-
Reporter name: greenfil
Original Reporter info from Mantis: greenfil
- Reporter name: greenfil
Description:
the procedure TFPGMapObject.CopyData does not check the FreeObjects flag when deleting objects
Steps to reproduce:
program Project1;
uses fgl;
type
{ TMyClass }
TMyClass=class
destructor Destroy; override;
end;
TMyClassMap=specialize TFPGMapObject<Integer, TMyClass>;
{ TMyClass }
destructor TMyClass.Destroy;
begin
WriteLn('MyClass Destroy!');
inherited Destroy;
end;
var MyClass:TMyClass; Map:TMyClassMap;
begin
Map:=TMyClassMap.Create(False); //Not free MyObject!
MyClass:=TMyClass.Create;
Map.KeyData[0]:=MyClass;
Map.KeyData[0]:=MyClass;//MyClass Destroy! WTF?!
Map.Free;
end.
Mantis conversion info:
- Mantis ID: 36853
- OS: debian
- OS Build: 10
- Platform: x64
- Version: 3.0.4
- Fixed in revision: 44457 (#aa391dad)