RE: [c++] RE: CounterSignature or Multiple Signatures - is it possible?
Thank you all that replyed. Here is what I tried: DOMNode *findNextDSIGNode(DOMNode *n, const char * nodeName) { const XMLCh * name = getDSIGLocalName(n); if (strEquals(name, nodeName)) { if (iSignatureFound==iSignatureCount) //skip previous "Signature" nodes return n; iSignatureFound++; } DOMNode *child = n->getFirstChild(); while (child != NULL) { DOMNode *ret = findNextDSIGNode(child, nodeName); if (ret != NULL) return ret; child = child->getNextSibling(); } return child; } DOMNode *sigNode; iSignatureCount = 0; iSignatureFound = 0;// globals while ((sigNode = findNextDSIGNode(doc, "Signature")) != NULL) { verSig(sigNode); iSignatureCount++; //find next "Signature" node } but, it seems that my app crashes in strEquals() function call. Is there someone willing to help? :) Thank you, Milan
Re: [c++] RE: CounterSignature or Multiple Signatures - is it possible?
Milan, First a question - is iSignatureCount a global? If so, this approach may not be thread safe. An alternative (if threading is an issue) might be to pass in the previous found node to findNext. strEquals should be able to handle a mixture of XMLCh and char strings, but it will assume the string is on the local code page. Could it be failing in the transcode for some reason. Can you tell us what the failure is? Cheers, Berin Milan Tomic wrote: Thank you all that replyed. Here is what I tried: DOMNode *findNextDSIGNode(DOMNode *n, const char * nodeName) { const XMLCh * name = getDSIGLocalName(n); if (strEquals(name, nodeName)) { if (iSignatureFound==iSignatureCount) //skip previous "Signature" nodes return n; iSignatureFound++; } DOMNode *child = n->getFirstChild(); while (child != NULL) { DOMNode *ret = findNextDSIGNode(child, nodeName); if (ret != NULL) return ret; child = child->getNextSibling(); } return child; } DOMNode *sigNode; iSignatureCount = 0; iSignatureFound = 0;// globals while ((sigNode = findNextDSIGNode(doc, "Signature")) != NULL) { verSig(sigNode); iSignatureCount++; //find next "Signature" node } but, it seems that my app crashes in strEquals() function call. Is there someone willing to help? :) Thank you, Milan
RE: [c++] RE: CounterSignature or Multiple Signatures - is it possible?
> First a question - is iSignatureCount a global? Yes. > If so, this approach > may not be thread safe. An alternative (if threading is an > issue) might > be to pass in the previous found node to findNext. My app is not multithreaded. I was looking for quick solution. > strEquals should be able to handle a mixture of XMLCh and > char strings, > but it will assume the string is on the local code page. Could it be > failing in the transcode for some reason. I don't know. My code is in dll, and dll is called from an exe. It is not so easy to debug. :( > Can you tell us what the failure is? Allways different. Sometimes my app crashes (diseapear) without any warning dialog (altough I do have try/catch block). Sometimes it shows an access violation message or "pure virtual function was called" message. Thank you for trying to help. Milan
Re: [c++] RE: CounterSignature or Multiple Signatures - is it possible?
That almost smells like a mismatch between run-time libraries. The Debug version of xsec uses the Debug DLL runtime and the release the normal DLL runtime. For various reasons, the debug also uses the MFC in a shared DLL. BTW - You should be able to debug through the DLL if it is compiled with debug info. (I do it all the time :>) Cheers, Berin Milan Tomic wrote: First a question - is iSignatureCount a global? Yes. If so, this approach may not be thread safe. An alternative (if threading is an issue) might be to pass in the previous found node to findNext. My app is not multithreaded. I was looking for quick solution. strEquals should be able to handle a mixture of XMLCh and char strings, but it will assume the string is on the local code page. Could it be failing in the transcode for some reason. I don't know. My code is in dll, and dll is called from an exe. It is not so easy to debug. :( Can you tell us what the failure is? Allways different. Sometimes my app crashes (diseapear) without any warning dialog (altough I do have try/catch block). Sometimes it shows an access violation message or "pure virtual function was called" message. Thank you for trying to help. Milan