user740521
user740521

Reputation: 1204

Xerces-c assertion error

I have downloaded and built Xerces-c on linux:

Linux xxxx 2.6.24.7-server-3mnb #1 SMP Wed Sep 9 16:34:18 EDT 2009 x86_64 Intel(R) Xeon(R) CPU            3065  @ 2.33GHz GNU/Linux

Created the simple program:

#include <xercesc/sax2/XMLReaderFactory.hpp>
#include <xercesc/sax2/SAX2XMLReader.hpp>
#include <xercesc/sax2/DefaultHandler.hpp>
#include <xercesc/util/XMLUni.hpp>
//#include <xercesc/validators/common/Grammar.hpp>

   XERCES_CPP_NAMESPACE_USE;

int main(int argC, char *argv[])
{
    //  DefaultHandler handler;
    SAX2XMLReader *parser = XMLReaderFactory::createXMLReader();
    delete parser;
    return 0;
}

compiled it:

g++ -lcurl -o xtest test.cpp /usr/local/lib/libxerces-c.a

successful compile, run it and this is what I get:

 ./xtest
xtest: xercesc/util/XMemory.cpp:63: static void* xercesc_3_1::XMemory::operator new(size_t, xercesc_3_1::MemoryManager*): Assertion `manager != 0' failed.
Aborted (core dumped)

Anyone have similar experience/successfully built and used this library... how? It's becoming a real pain and apparently it's the only thing for linux that properly validates an XML document against multiple schemas with namespace support (or is it??)

Upvotes: 1

Views: 894

Answers (1)

Ralf
Ralf

Reputation: 9573

It looks like you forgot to call XMLPlatformUtils::Initialize before using any xerces functionality.

Initialization must be called first in any client code.

Also, don't forget XMLPlatformUtils::Terminate() once you're done with xerces i.e. at the end of the program.

The termination call is currently optional, to aid those dynamically loading the parser to clean up before exit, or to avoid spurious reports from leak detectors.

AFAIR failing to init xerces results in the error you listed.

Upvotes: 3

Related Questions