From e1fdd1e49326041e7cbd68876879e51b2a79e973 Mon Sep 17 00:00:00 2001
From: Hiltjo Posthuma <hiltjo@codemadness.org>
Date: Tue, 11 Jun 2019 20:57:16 +0200
Subject: 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.
---
 xml.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/xml.c b/xml.c
index 0e6f5d8..d6e63b0 100644
--- 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;
-- 
cgit v1.2.3