Milan,

I'm confused.

The memory leak you show below only makes sense if somehow the mp_transformsList variable is set to NULL prior to the Reference being deleted. If the Reference itself was not deleted, then a formatter object would also be left hanging around. So the reference is being deleted, but mp_transformList is either NULL or has been over-written and a new one is being deleted.

The only places mp_transformList is set to NULL or re-created is where DSIGReference::createBlankReference() is called - which would indicate a reference node being re-used, or DSIGReference::load() is called, which would also indicate a reference being re-used.

Does either of those scenarious sound possible?

Cheers,
        Berin


Milan Tomic wrote:


Berin,

Should I delete DSIGReference (and when?) returned from DSIGSignature::CreateReference() function? I have this peace of code:

} else {
        DSIGReference *ref;
        ref = sig->createReference(MAKE_UNICODE_STRING(""));

DSIGTransformEnvelope *env = ref->appendEnvelopedSignatureTransform();
DSIGTransformC14n *c14 = ref->appendCanonicalizationTransform(CANON_C14NE_NOC);
}


I'm reading memory leaks here:

xml-security-c-1.1.0\src\dsig\dsigreference.cpp(254) : {2471} normal block at 0x00F69628, 24 bytes long.
Data: < 8$ > F4 9C 90 00 38 24 F9 00 C8 0C FA 00 03 00 00 00
xml-security-c-1.1.0\src\dsig\dsigreference.cpp(189) : {2469} normal block at 0x00F61EF0, 16 bytes long.
Data: < > CC CD CD CD 80 96 F6 00 88 96 F6 00 88 96 F6 00
xml-security-c-1.1.0\src\dsig\dsigreference.cpp(211) : {2464} normal block at 0x00F61C78, 12 bytes long.
Data: <D > 44 9F 90 00 C8 20 F9 00 C8 0C FA 00


I've tried to delete "ref" variable but failed.

Best regards,
Milan

Reply via email to