diff options
author | Sebastian Pipping <sebastian@pipping.org> | 2022-10-24 02:20:04 +0200 |
---|---|---|
committer | Sebastian Pipping <sebastian@pipping.org> | 2022-10-24 16:01:19 +0200 |
commit | dbf1202529f7a531e65c43f0db2324520a85d10a (patch) | |
tree | f8d58935120ddae7acebe7ab7d93e39072f95752 | |
parent | 2f38031778d6512f3e6b684492b4d0cc3428baef (diff) | |
download | libexpat-git-dbf1202529f7a531e65c43f0db2324520a85d10a.tar.gz |
examples: Make use of XML_GetBuffer
-rw-r--r-- | expat/examples/elements.c | 12 | ||||
-rw-r--r-- | expat/examples/outline.c | 12 |
2 files changed, 18 insertions, 6 deletions
diff --git a/expat/examples/elements.c b/expat/examples/elements.c index 6a96fb4e..1a3c786d 100644 --- a/expat/examples/elements.c +++ b/expat/examples/elements.c @@ -76,7 +76,6 @@ endElement(void *userData, const XML_Char *name) { int main(void) { - char buf[BUFSIZ]; XML_Parser parser = XML_ParserCreate(NULL); int done; int depth = 0; @@ -89,7 +88,14 @@ main(void) { XML_SetUserData(parser, &depth); XML_SetElementHandler(parser, startElement, endElement); do { - const size_t len = fread(buf, 1, sizeof(buf), stdin); + void *const buf = XML_GetBuffer(parser, BUFSIZ); + if (! buf) { + fprintf(stderr, "Couldn't allocate memory for buffer\n"); + XML_ParserFree(parser); + return 1; + } + + const size_t len = fread(buf, 1, BUFSIZ, stdin); if (ferror(stdin)) { fprintf(stderr, "Read error\n"); @@ -99,7 +105,7 @@ main(void) { done = feof(stdin); - if (XML_Parse(parser, buf, (int)len, done) == XML_STATUS_ERROR) { + if (XML_ParseBuffer(parser, (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), diff --git a/expat/examples/outline.c b/expat/examples/outline.c index 4f2490f3..d154e33b 100644 --- a/expat/examples/outline.c +++ b/expat/examples/outline.c @@ -79,7 +79,6 @@ endElement(void *userData, const XML_Char *name) { int main(void) { - char buf[BUFSIZ]; XML_Parser parser = XML_ParserCreate(NULL); int done; int depth = 0; @@ -92,7 +91,14 @@ main(void) { XML_SetUserData(parser, &depth); XML_SetElementHandler(parser, startElement, endElement); do { - const size_t len = fread(buf, 1, sizeof(buf), stdin); + void *const buf = XML_GetBuffer(parser, BUFSIZ); + if (! buf) { + fprintf(stderr, "Couldn't allocate memory for buffer\n"); + XML_ParserFree(parser); + return 1; + } + + const size_t len = fread(buf, 1, BUFSIZ, stdin); if (ferror(stdin)) { fprintf(stderr, "Read error\n"); @@ -102,7 +108,7 @@ main(void) { done = feof(stdin); - if (XML_Parse(parser, buf, (int)len, done) == XML_STATUS_ERROR) { + if (XML_ParseBuffer(parser, (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), |