Olá parceiros,
Identificamos memory leak na unit ACBrNFeWebServices.pas na linha 1159, caso não tenha sido definido um certificado digital,
pois a procedure ConfiguraReqResp gera uma exceção quebrando o bloco try..finally, segue trecho do código:
{$IFDEF ACBrNFeOpenSSL} HTTP := THTTPSend.Create; {$ELSE} {$IFDEF SoapHTTP} ReqResp := THTTPReqResp.Create(nil); ReqResp.UseUTF8InHeader := True; {$ELSE} ReqResp := TACBrHTTPReqResp.Create; // <--- vai gerar memory leak caso não tenha sido informado um certificado {$ENDIF} ConfiguraReqResp( ReqResp ); // <--- memory leak no objeto THTTPReqResp, pois essa linha gera uma exceção ReqResp.URL := URL; ReqResp.SoapAction := SoapAction; {$ENDIF} FEnvelopeSoap := UTF8Encode(FEnvelopeSoap);
sugestão:
{$IFDEF ACBrNFeOpenSSL} HTTP := THTTPSend.Create; {$ELSE} {$IFDEF SoapHTTP} ReqResp := THTTPReqResp.Create(nil); ReqResp.UseUTF8InHeader := True; {$ELSE} ReqResp := TACBrHTTPReqResp.Create; {$ENDIF} {$ENDIF}
try {$IFNDEF ACBrNFeOpenSSL} ConfiguraReqResp( ReqResp ); // <-- gera a exceção controlada por try..finally ReqResp.URL := URL; ReqResp.SoapAction := SoapAction; {$ENDIF} FEnvelopeSoap := UTF8Encode(FEnvelopeSoap);
...
Até mais.