commit e1fdd1e49326041e7cbd68876879e51b2a79e973
parent c020d456846f33ec834ddf9a1656368e502cd67f
Author: Hiltjo Posthuma <hiltjo@codemadness.org>
Date: Tue, 11 Jun 2019 20:57:16 +0200
xml: improve cdata and comment callback logic
it used to call both handlers twice at the end for "-->" (comment) or "]]>"
(CDATA) with the data "" and length 0.
Now it is only called when non-empty. The start and end handlers can still be
used.
Diffstat:
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/xml.c b/xml.c
@@ -126,7 +126,7 @@ xml_parsecomment(XMLParser *x)
x->xmlcommentstart(x);
while ((c = GETNEXT()) != EOF) {
if (c == '-' || c == '>') {
- if (x->xmlcomment) {
+ if (x->xmlcomment && datalen) {
x->data[datalen] = '\0';
x->xmlcomment(x, x->data, datalen);
datalen = 0;
@@ -175,7 +175,7 @@ xml_parsecdata(XMLParser *x)
x->xmlcdatastart(x);
while ((c = GETNEXT()) != EOF) {
if (c == ']' || c == '>') {
- if (x->xmlcdata) {
+ if (x->xmlcdata && datalen) {
x->data[datalen] = '\0';
x->xmlcdata(x, x->data, datalen);
datalen = 0;