summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Pipping <sebastian@pipping.org>2022-10-24 01:40:33 +0200
committerSebastian Pipping <sebastian@pipping.org>2022-10-24 16:00:45 +0200
commit894b98d9b39a5ffa26caaff4cc9444c14642cb87 (patch)
treeb695d9f431e76712dc52dc6621fed2d6ed8ff8d0
parent37386fd2d3fa798f3c5bd94366f3efe66e31dec5 (diff)
downloadlibexpat-git-894b98d9b39a5ffa26caaff4cc9444c14642cb87.tar.gz
examples: Be consistent across examples regarding read looping and main exit
-rw-r--r--expat/examples/elements.c12
-rw-r--r--expat/examples/outline.c14
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);