[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