diff options
-rw-r--r-- | expat/examples/elements.c | 12 | ||||
-rw-r--r-- | expat/examples/outline.c | 14 |
2 files changed, 18 insertions, 8 deletions
diff --git a/expat/examples/elements.c b/expat/examples/elements.c index cf7d29e2..a2673d37 100644 --- a/expat/examples/elements.c +++ b/expat/examples/elements.c @@ -85,8 +85,16 @@ main(void) { XML_SetUserData(parser, &depth); XML_SetElementHandler(parser, startElement, endElement); do { - size_t len = fread(buf, 1, sizeof(buf), stdin); - done = len < sizeof(buf); + const size_t len = fread(buf, 1, sizeof(buf), stdin); + + if (ferror(stdin)) { + fprintf(stderr, "Read error\n"); + XML_ParserFree(parser); + return 1; + } + + done = feof(stdin); + if (XML_Parse(parser, buf, (int)len, done) == XML_STATUS_ERROR) { fprintf(stderr, "Parse error at line %" XML_FMT_INT_MOD "u:\n%" XML_FMT_STR "\n", diff --git a/expat/examples/outline.c b/expat/examples/outline.c index d553d234..4f2490f3 100644 --- a/expat/examples/outline.c +++ b/expat/examples/outline.c @@ -86,27 +86,29 @@ main(void) { if (! parser) { fprintf(stderr, "Couldn't allocate memory for parser\n"); - exit(-1); + return 1; } XML_SetUserData(parser, &depth); XML_SetElementHandler(parser, startElement, endElement); do { - int len; + const size_t len = fread(buf, 1, sizeof(buf), stdin); - len = (int)fread(buf, 1, BUFSIZ, stdin); if (ferror(stdin)) { fprintf(stderr, "Read error\n"); - exit(-1); + XML_ParserFree(parser); + return 1; } + done = feof(stdin); - if (XML_Parse(parser, buf, len, done) == XML_STATUS_ERROR) { + if (XML_Parse(parser, buf, (int)len, done) == XML_STATUS_ERROR) { fprintf(stderr, "Parse error at line %" XML_FMT_INT_MOD "u:\n%" XML_FMT_STR "\n", XML_GetCurrentLineNumber(parser), XML_ErrorString(XML_GetErrorCode(parser))); - exit(-1); + XML_ParserFree(parser); + return 1; } } while (! done); XML_ParserFree(parser); |