Hi !
this code coredumps on solaris 2.7 using libxerces-c v2.1 in the first call
to method Terminate .
debugger output:
=============
(gdb) backtrace
#0 0x0 in ?? ()
#1 0xff15d6fc in reinitImplementation () from
/sw/local/develsup/xerces/xercesc_2_1_0Sol2.7ForCC/lib/libxerces-c.so.21
#2 0xff19b880 in XMLPlatformUtils::Terminate () from
/sw/local/develsup/xerces/xercesc_2_1_0Sol2.7ForCC/lib/libxerces-c.so.21
#3 0x10a3c in main ()
sourcecode:
==========
#include <xercesc/parsers/XercesDOMParser.hpp>
#include <xercesc/sax/HandlerBase.hpp>
#include <xercesc/dom/DOM.hpp>
#include <xercesc/dom/DOMNode.hpp>
#include <xercesc/dom/DOMException.hpp>
#include <xercesc/util/XMLString.hpp>
#include <xercesc/util/PlatformUtils.hpp>
#include <xercesc/validators/common/Grammar.hpp>
#include <xercesc/framework/StdOutFormatTarget.hpp>
#include <xercesc/framework/MemBufFormatTarget.hpp>
#include <xercesc/framework/MemBufInputSource.hpp>
#include <string>
int main(int argc,char** argv)
{
std::cout << "init" << std::endl;
XMLPlatformUtils::Initialize();
{
XMLCh tempStr[4];
XMLString::transcode("LS", tempStr, 3);
XMLCh schemaTyp[35];
XMLString::transcode("http://www.w3.org/2001/XMLSchema",schemaTyp,34);
DOMImplementation* pDomImpl=
DOMImplementationRegistry::getDOMImplementation(tempStr);
// DOMBuilder* pParser =
pDomImpl->createDOMBuilder(DOMImplementationLS::MODE_SYNCHRONOUS,0);
// DOMWriter* pWriter = pDomImpl->createDOMWriter();
// delete pParser;
// delete pWriter;
delete pDomImpl;
}
std::cout << "terminate" << std::endl;
XMLPlatformUtils::Terminate();
std::cout << "init2" << std::endl;
XMLPlatformUtils::Initialize();
std::cout << "terminate2" << std::endl;
XMLPlatformUtils::Terminate();
return 0;
}
but this code works:
===============
#include <xercesc/util/PlatformUtils.hpp>
#include <string>
int main(int argc,char** argv)
{
std::cout << "init" << std::endl;
XMLPlatformUtils::Initialize();
std::cout << "terminate" << std::endl;
XMLPlatformUtils::Terminate();
std::cout << "init2" << std::endl;
XMLPlatformUtils::Initialize();
std::cout << "terminate2" << std::endl;
XMLPlatformUtils::Terminate();
return 0;
}
is this fixed in a later version of xerces-c ?
Thanks and greetings
david c.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]