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