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; |