Hello,
working on a C++ project we are trying to parse a very large XML file using 
Xerces-C version 3.1.1

We have encountered a problem due to the hard-coded limits defined at line 33 
in file src/xercesc/dom/impl/DOMNodeIDMap.cpp :

static const XMLSize_t gPrimes[] = {997, 9973, 99991, 999983, 0 };  // To do - 
add a few more.

The parsing of our fails with the following message:
NodeIDMap exceeds largest available size at line: 1321916
We think that the source of the error is the constructor of DOMNodeIDMap (line 
49 of the same file).

To solve the issue we have modified line 33 to:
static const XMLSize_t gPrimes[] = {997, 9973, 99991, 999983, 9999991, 
99999989, 0 };  // To do - add a few more.

If we understand correctly the hashing mechanism, the only requirement on 
gPrimes is to be prime numbers. Is this correct? Do you think this modification 
may have other side-effects?

Thank you,
Andrea Dotti

Reply via email to