[Expat-discuss] Expat's XML_Parse() method does not return
Sebastian Pipping
webmaster at hartwork.org
Sun Aug 3 15:53:32 CEST 2008
James Kim wrote:
> 1.. void
> 2.. XMLParser::ParseXML(BFile* file)
> 3.. {
> 4.. char msg[1024];
> 5..
> 6.. XML_Parser parser = XML_ParserCreate(NULL);
> 7.. XML_SetUserData(parser, this);
> 8.. XML_SetElementHandler(parser, StartElementHandler, EndElementHandler);
> 9.. XML_SetCharacterDataHandler(parser, CharDataHandler);
> 10..
> 11.. bool done = false;
> 12.. do {
> 13.. ssize_t len = file->Read(fBuffer, BUFSIZ);
> 14.. if (len < BUFSIZ) {
> 15.. done = true;
> 16.. }
Does file->Read() return 0 or -1 on EOF?
Is the filesize a multiple of BUFSIZ?
Have you tried without handlers set?
> 17.. if (!XML_Parse(parser, fBuffer, len, done)) {
> 18.. sprintf(msg, "%s at line %d\n",
> 19.. XML_ErrorString(XML_GetErrorCode(parser)),
> 20.. XML_GetCurrentLineNumber(parser));
> 21.. printf(msg);
> 22.. }
> 23.. } while (!done);
> 24..
> 25.. XML_ParserFree(parser);
> 26.. }
Sebastian
More information about the Expat-discuss
mailing list