TMC Cryptography Pack 4.2.6.0 and Crescendo C700 card as a token - Error

Hi, I work with a Crescendo C700 as a token with code as bellow:
procedure TForm1.Button2Click(Sender: TObject);
var
PAdES: TPAdES;
PKCS11: TPKCS11;
AFileName, AFileExtension: String;
CryptLib:String;
begin
CryptLib:='c:\windows\system32\aetpkss1.dll';
PAdES := TPAdES.Create;
try
PAdES.Packaging := enveloped;
PAdES.PKCS11Param.isToken := true;
PAdES.PKCS11Param.SlotIndex := 0;
PAdES.PKCS11Param.DLLPath := CryptLib;
PAdES.PKCS11Param.Pin := 'xxxx'; //this is a Card PIN

PKCS11 := TPKCS11.Create(CryptLib);
try
  PAdES.PKCS11Param.CertIndex := PKCS11.CertificatesIndex[0];
finally
  PKCS11.Free;
end;

if OpenDialog1.Execute then
begin
  AFileExtension := ExtractFileExt(OpenDialog1.FileName);
  AFileName := ChangeFileExt(OpenDialog1.FileName, '');
  AFileName := AFileName + '_Signed' + AFileExtension;
  PAdES.GenerateSignature(OpenDialog1.FileName, AFileName);
end;

Finally
PAdES.Free;
end;
end;

and on PAdES.Free; there was an error. I try to solve it myself and make a change:
unit AdESObj
procedure TAdES.InitPKCS11(enddestroy: boolean);
begin
if FPKCS11param.isToken = true then
begin
FPKCS11Obj := TPKCS11.Create(FPKCS11param.DLLPath);
FPKCS11Obj.currentSlotIndex := PKCS11Param.SlotIndex;
FPKCS11Obj.currentObjectIndex := PKCS11Param.CertIndex;
FCert.CrtStr := FPKCS11Obj.ExtractCertificate(PKCS11Param.CertIndex);
FCert.Decode;
if enddestroy then
begin
FPKCS11Obj.Free;
FPKCS11Obj:=nil;
end;
end;
end;

destructor TAdES.Destroy;
begin
FCert.Free;
{$IFDEF MSWINDOWS}
if (self.FPKCS11param.isToken = true) then
** if Assigned(FPKCS11Obj) then**
if (FPKCS11Obj.DLLPath <> '') then
FPKCS11Obj.Free;
{$ENDIF}
inherited Destroy;
end;

And now document is signed and there is not error. Could You checked this in the distribution?

Thank you for reporting this issue. I will check that in the TMS CP code.