Can't set DebugLogger in LazLogger.pas to nil
Original Reporter info from Mantis: MrShoor
-
Reporter name: Alexander
Original Reporter info from Mantis: MrShoor
- Reporter name: Alexander
Description:
DebugLogger := nil; occurs to AV
Steps to reproduce:
uses
LazLogger;
var
newLogger: TLazLoggerFile;
begin
newLogger := DebugLogger; //will create new logger object with call GetDebugLogger()
//bla bla bla
DebugLogger := nil; //should close file and destroy current logger object
end;
Additional information:
problem comes with this procedure in LazLoggerBase.pas:
procedure SetDebugLogger(ALogger: TLazLogger);
begin
ReleaseRefAndNil(TheLazLogger);
TheLazLogger := ALogger;
TheLazLogger.AddReference;
end;
it's call TheLazLogger.AddReference; always, even if TheLazLogger is nil
Can be fixed with checking TheLazLogger <> nil before call AddReference:
procedure SetDebugLogger(ALogger: TLazLogger);
begin
ReleaseRefAndNil(TheLazLogger);
TheLazLogger := ALogger;
if TheLazLogger <> nil then
TheLazLogger.AddReference;
end;
Mantis conversion info:
- Mantis ID: 32548
- OS: Any
- OS Build: Any
- Platform: Any
- Fixed in version: 1.9 (SVN)
- Fixed in revision: 32548 (#7022e3f2)