xml.c: remove buffering of comment data, which is unused anyway

This commit is contained in:
Hiltjo Posthuma 2020-09-19 16:38:21 +02:00
parent 88208d5ffd
commit 95f025d9bc
2 changed files with 2 additions and 35 deletions

34
xml.c
View File

@ -116,49 +116,19 @@ startvalue:
static void
xml_parsecomment(XMLParser *x)
{
size_t datalen = 0, i = 0;
size_t i = 0;
int c;
if (x->xmlcommentstart)
x->xmlcommentstart(x);
while ((c = GETNEXT()) != EOF) {
if (c == '-' || c == '>') {
if (x->xmlcomment && datalen) {
x->data[datalen] = '\0';
x->xmlcomment(x, x->data, datalen);
datalen = 0;
}
}
if (c == '-') {
if (++i > 2) {
if (x->xmlcomment)
for (; i > 2; i--)
x->xmlcomment(x, "-", 1);
if (++i > 2)
i = 2;
}
continue;
} else if (c == '>' && i == 2) {
if (x->xmlcommentend)
x->xmlcommentend(x);
return;
} else if (i) {
if (x->xmlcomment) {
for (; i > 0; i--)
x->xmlcomment(x, "-", 1);
}
i = 0;
}
if (datalen < sizeof(x->data) - 1) {
x->data[datalen++] = c;
} else {
x->data[datalen] = '\0';
if (x->xmlcomment)
x->xmlcomment(x, x->data, datalen);
x->data[0] = c;
datalen = 1;
}
}
}

3
xml.h
View File

@ -16,9 +16,6 @@ typedef struct xmlparser {
void (*xmlcdatastart)(struct xmlparser *);
void (*xmlcdata)(struct xmlparser *, const char *, size_t);
void (*xmlcdataend)(struct xmlparser *);
void (*xmlcommentstart)(struct xmlparser *);
void (*xmlcomment)(struct xmlparser *, const char *, size_t);
void (*xmlcommentend)(struct xmlparser *);
void (*xmldata)(struct xmlparser *, const char *, size_t);
void (*xmldataend)(struct xmlparser *);
void (*xmldataentity)(struct xmlparser *, const char *, size_t);