summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Pipping <sebastian@pipping.org>2022-10-24 02:20:04 +0200
committerSebastian Pipping <sebastian@pipping.org>2022-10-24 16:01:19 +0200
commitdbf1202529f7a531e65c43f0db2324520a85d10a (patch)
treef8d58935120ddae7acebe7ab7d93e39072f95752
parent2f38031778d6512f3e6b684492b4d0cc3428baef (diff)
downloadlibexpat-git-dbf1202529f7a531e65c43f0db2324520a85d10a.tar.gz
examples: Make use of XML_GetBuffer
-rw-r--r--expat/examples/elements.c12
-rw-r--r--expat/examples/outline.c12
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),