You are viewing a plain text version of this content. The canonical link for it is here.
Posted to c-users@xerces.apache.org by Joan Puigcerver <jo...@gmail.com> on 2010/09/11 21:07:08 UTC

Problems with characters() function (SAX Parsing) under 64 bits

Hello everyone.

I'm developing a little project under GNU/Linux and I'm using Xerces-C to
parse some XML files. I tested my program in three different machines: one
with Ubuntu Desktop 10.04 32-bits, one with Ubuntu Desktop 10.04 64 bits and
one with Ubuntu Server 10.04 64 bits. My Xerces-C version is 3.1.1.

I wrote a derived class from DefaultHandler to parse large XML files and it
worked very well under the 32 bits machine, but the function characters() is
not being executed under both 64 bits machines.

Here you have the full code of my project:
http://svn.assembla.com/svn/oraclebacon/trunk/

Check out src/SAX*Handler.cpp and include/SAX*Handler.hpp files. There is a
line in SAXPeopleHandler::characters that prints the text "here" and is not
executed any time. I've tried the same in the other handler classes. But
this only happens in 64 bits machines. My code works perfectly in the 32 bit
machine. That is what I don't understand...

You can look at my configure.ac and Makefile.am files which are used to
build the program. I'm simply including the library "-lxerces-c" to compile
the source files.

Has anyone had this problem or any similar?

Thank you.

PS: If you want to obtain the XML and XSD file that I'm using, here you
have: http://joapuipe.dyndns.org/xml.tar.gz

-- 
Joan Puigcerver Pérez
Public GPG Key:
http://pgp.rediris.es:11371/pks/lookup?op=get&search=0x69200C913F70D762

Re: Problems with characters() function (SAX Parsing) under 64 bits

Posted by Joan Puigcerver <jo...@gmail.com>.
Fixed! Thank you very much ;o)

2010/9/13 Alberto Massari <Al...@progress.com>

>  The signature for characters() is wrong: you shouldn't use "const unsigned
> int length", but "const XMLSize_t length".
> On 64-bit systems, XMLSize_t expands to be a 64-bit unsigned integer.
>
> Alberto
>
>
> On 9/11/2010 9:07 PM, Joan Puigcerver wrote:
>
>> Hello everyone.
>>
>> I'm developing a little project under GNU/Linux and I'm using Xerces-C to
>> parse some XML files. I tested my program in three different machines: one
>> with Ubuntu Desktop 10.04 32-bits, one with Ubuntu Desktop 10.04 64 bits
>> and
>> one with Ubuntu Server 10.04 64 bits. My Xerces-C version is 3.1.1.
>>
>> I wrote a derived class from DefaultHandler to parse large XML files and
>> it
>> worked very well under the 32 bits machine, but the function characters()
>> is
>> not being executed under both 64 bits machines.
>>
>> Here you have the full code of my project:
>> http://svn.assembla.com/svn/oraclebacon/trunk/
>>
>> Check out src/SAX*Handler.cpp and include/SAX*Handler.hpp files. There is
>> a
>> line in SAXPeopleHandler::characters that prints the text "here" and is
>> not
>> executed any time. I've tried the same in the other handler classes. But
>> this only happens in 64 bits machines. My code works perfectly in the 32
>> bit
>> machine. That is what I don't understand...
>>
>> You can look at my configure.ac and Makefile.am files which are used to
>> build the program. I'm simply including the library "-lxerces-c" to
>> compile
>> the source files.
>>
>> Has anyone had this problem or any similar?
>>
>> Thank you.
>>
>> PS: If you want to obtain the XML and XSD file that I'm using, here you
>> have: http://joapuipe.dyndns.org/xml.tar.gz
>>
>>
>


-- 
Joan Puigcerver Pérez
Public GPG Key:
http://pgp.rediris.es:11371/pks/lookup?op=get&search=0x69200C913F70D762

Re: Problems with characters() function (SAX Parsing) under 64 bits

Posted by Alberto Massari <Al...@progress.com>.
  The signature for characters() is wrong: you shouldn't use "const 
unsigned int length", but "const XMLSize_t length".
On 64-bit systems, XMLSize_t expands to be a 64-bit unsigned integer.

Alberto

On 9/11/2010 9:07 PM, Joan Puigcerver wrote:
> Hello everyone.
>
> I'm developing a little project under GNU/Linux and I'm using Xerces-C to
> parse some XML files. I tested my program in three different machines: one
> with Ubuntu Desktop 10.04 32-bits, one with Ubuntu Desktop 10.04 64 bits and
> one with Ubuntu Server 10.04 64 bits. My Xerces-C version is 3.1.1.
>
> I wrote a derived class from DefaultHandler to parse large XML files and it
> worked very well under the 32 bits machine, but the function characters() is
> not being executed under both 64 bits machines.
>
> Here you have the full code of my project:
> http://svn.assembla.com/svn/oraclebacon/trunk/
>
> Check out src/SAX*Handler.cpp and include/SAX*Handler.hpp files. There is a
> line in SAXPeopleHandler::characters that prints the text "here" and is not
> executed any time. I've tried the same in the other handler classes. But
> this only happens in 64 bits machines. My code works perfectly in the 32 bit
> machine. That is what I don't understand...
>
> You can look at my configure.ac and Makefile.am files which are used to
> build the program. I'm simply including the library "-lxerces-c" to compile
> the source files.
>
> Has anyone had this problem or any similar?
>
> Thank you.
>
> PS: If you want to obtain the XML and XSD file that I'm using, here you
> have: http://joapuipe.dyndns.org/xml.tar.gz
>