mirror of
https://gitlab.gnome.org/GNOME/libxml2.git
synced 2025-07-29 11:41:22 +03:00
applied patch from Steven Rainwater to fix UTF8ToHtml behaviour on code
* HTMLparser.c: applied patch from Steven Rainwater to fix UTF8ToHtml behaviour on code points which are not mappable to predefined HTML entities, fixes #377544 Daniel
This commit is contained in:
@ -1,3 +1,9 @@
|
|||||||
|
Thu Nov 23 17:22:03 CET 2006 Daniel Veillard <daniel@veillard.com>
|
||||||
|
|
||||||
|
* HTMLparser.c: applied patch from Steven Rainwater to fix
|
||||||
|
UTF8ToHtml behaviour on code points which are not mappable to
|
||||||
|
predefined HTML entities, fixes #377544
|
||||||
|
|
||||||
Thu Nov 23 17:11:23 CET 2006 Daniel Veillard <daniel@veillard.com>
|
Thu Nov 23 17:11:23 CET 2006 Daniel Veillard <daniel@veillard.com>
|
||||||
|
|
||||||
* xpath.c: fixed a bug where the principal node type of an axis
|
* xpath.c: fixed a bug where the principal node type of an axis
|
||||||
|
14
HTMLparser.c
14
HTMLparser.c
@ -1842,6 +1842,8 @@ UTF8ToHtml(unsigned char* out, int *outlen,
|
|||||||
} else {
|
} else {
|
||||||
int len;
|
int len;
|
||||||
const htmlEntityDesc * ent;
|
const htmlEntityDesc * ent;
|
||||||
|
const char *cp;
|
||||||
|
char nbuf[16];
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Try to lookup a predefined HTML entity for it
|
* Try to lookup a predefined HTML entity for it
|
||||||
@ -1849,16 +1851,16 @@ UTF8ToHtml(unsigned char* out, int *outlen,
|
|||||||
|
|
||||||
ent = htmlEntityValueLookup(c);
|
ent = htmlEntityValueLookup(c);
|
||||||
if (ent == NULL) {
|
if (ent == NULL) {
|
||||||
/* no chance for this in Ascii */
|
snprintf(nbuf, sizeof(nbuf), "#%u", c);
|
||||||
*outlen = out - outstart;
|
cp = nbuf;
|
||||||
*inlen = processed - instart;
|
|
||||||
return(-2);
|
|
||||||
}
|
}
|
||||||
len = strlen(ent->name);
|
else
|
||||||
|
cp = ent->name;
|
||||||
|
len = strlen(cp);
|
||||||
if (out + 2 + len >= outend)
|
if (out + 2 + len >= outend)
|
||||||
break;
|
break;
|
||||||
*out++ = '&';
|
*out++ = '&';
|
||||||
memcpy(out, ent->name, len);
|
memcpy(out, cp, len);
|
||||||
out += len;
|
out += len;
|
||||||
*out++ = ';';
|
*out++ = ';';
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user