[
https://issues.apache.org/jira/browse/XERCESC-1959?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12998651#comment-12998651
]
David Bertoni commented on XERCESC-1959:
----------------------------------------
The serialization of grammars was never designed to be portable across
machines. There are issues with 32-bit and 64-bit builds and big-endian and
little-endian machines. For example:
void XSerializeEngine::writeString(const XMLCh* const toWrite
, const XMLSize_t bufferLen
, bool toWriteBufLen)
{
if (toWrite)
{
if (toWriteBufLen)
*this<<(unsigned long)bufferLen;
XMLSize_t strLen = XMLString::stringLen(toWrite);
*this<<(unsigned long)strLen;
write(toWrite, strLen);
}
else
{
*this<<noDataFollowed;
}
}
Note that XMLSize_t is being cast to unsigned long, which will be a 32-bit
value using a 32-bit binary, and a 64-bit value using a 64-bit binary.
The only way to make this work properly would be to store integrals as 64-bit
values in both 32-bit and 64-bit binaries. And that still would not deal with
any endianness issues.
Is there some reason you can't keep different serialized grammars for 32-bit
and 64-bit builds?
> serializeGrammars does not work between 32 and 64 bit systems
> -------------------------------------------------------------
>
> Key: XERCESC-1959
> URL: https://issues.apache.org/jira/browse/XERCESC-1959
> Project: Xerces-C++
> Issue Type: Bug
> Components: Validating Parser (XML Schema)
> Affects Versions: 3.1.1
> Environment: Win Vista 32 bit + VS 2010 express, Xerces-C 3.1.1 binary
> Ubuntu 10.10 64 bit, Xerces-C 3.1 installed
> Reporter: Daniel Turcanu
>
> Serialization of schema grammar does not work between Windows 32 and Linux 64
> bit. Serializing on one machine (with serializeGrammars) and deserializing on
> the other (with deserializeGrammars) fails ungracefully.
> Serializing and deserializing on the same machine works fine.
--
This message is automatically generated by JIRA.
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]