| Index: third_party/libxml/src/xmlsave.c
|
| diff --git a/third_party/libxml/src/xmlsave.c b/third_party/libxml/src/xmlsave.c
|
| index 774404b884ad8596cf6ee9142ed5a93a1cbf7e7d..4a8e3f3903274558390c2e9981917020b77d6d81 100644
|
| --- a/third_party/libxml/src/xmlsave.c
|
| +++ b/third_party/libxml/src/xmlsave.c
|
| @@ -2097,8 +2097,8 @@ xmlBufAttrSerializeTxtContent(xmlBufPtr buf, xmlDocPtr doc,
|
| xmlBufAdd(buf, BAD_CAST "&", 5);
|
| cur++;
|
| base = cur;
|
| - } else if ((*cur >= 0x80) && ((doc == NULL) ||
|
| - (doc->encoding == NULL))) {
|
| + } else if ((*cur >= 0x80) && (cur[1] != 0) &&
|
| + ((doc == NULL) || (doc->encoding == NULL))) {
|
| /*
|
| * We assume we have UTF-8 content.
|
| */
|
| @@ -2121,14 +2121,14 @@ xmlBufAttrSerializeTxtContent(xmlBufPtr buf, xmlDocPtr doc,
|
| val <<= 6;
|
| val |= (cur[1]) & 0x3F;
|
| l = 2;
|
| - } else if (*cur < 0xF0) {
|
| + } else if ((*cur < 0xF0) && (cur [2] != 0)) {
|
| val = (cur[0]) & 0x0F;
|
| val <<= 6;
|
| val |= (cur[1]) & 0x3F;
|
| val <<= 6;
|
| val |= (cur[2]) & 0x3F;
|
| l = 3;
|
| - } else if (*cur < 0xF8) {
|
| + } else if ((*cur < 0xF8) && (cur [2] != 0) && (cur[3] != 0)) {
|
| val = (cur[0]) & 0x07;
|
| val <<= 6;
|
| val |= (cur[1]) & 0x3F;
|
|
|