| Index: third_party/libxml/src/parser.c
|
| diff --git a/third_party/libxml/src/parser.c b/third_party/libxml/src/parser.c
|
| index 71315cff4d62c637abe2052fc3c9ea998134e522..978a58537b6d3a33697241ef067b886374356f8b 100644
|
| --- a/third_party/libxml/src/parser.c
|
| +++ b/third_party/libxml/src/parser.c
|
| @@ -3625,7 +3625,7 @@ xmlParseNameAndCompare(xmlParserCtxtPtr ctxt, xmlChar const *other) {
|
| }
|
| /* failure (or end of input buffer), check with full function */
|
| ret = xmlParseName (ctxt);
|
| - /* strings coming from the dictionnary direct compare possible */
|
| + /* strings coming from the dictionary direct compare possible */
|
| if (ret == other) {
|
| return (const xmlChar*) 1;
|
| }
|
| @@ -8819,7 +8819,7 @@ xmlParseEndTag(xmlParserCtxtPtr ctxt) {
|
| * @prefix: the prefix to lookup
|
| *
|
| * Lookup the namespace name for the @prefix (which ca be NULL)
|
| - * The prefix must come from the @ctxt->dict dictionnary
|
| + * The prefix must come from the @ctxt->dict dictionary
|
| *
|
| * Returns the namespace name or NULL if not bound
|
| */
|
| @@ -11211,8 +11211,9 @@ xmlParseGetLasts(xmlParserCtxtPtr ctxt, const xmlChar **lastlt,
|
| }
|
| /**
|
| * xmlCheckCdataPush:
|
| - * @cur: pointer to the bock of characters
|
| + * @cur: pointer to the block of characters
|
| * @len: length of the block in bytes
|
| + * @complete: 1 if complete CDATA block is passed in, 0 if partial block
|
| *
|
| * Check that the block of characters is okay as SCdata content [20]
|
| *
|
| @@ -11220,7 +11221,7 @@ xmlParseGetLasts(xmlParserCtxtPtr ctxt, const xmlChar **lastlt,
|
| * UTF-8 error occured otherwise
|
| */
|
| static int
|
| -xmlCheckCdataPush(const xmlChar *utf, int len) {
|
| +xmlCheckCdataPush(const xmlChar *utf, int len, int complete) {
|
| int ix;
|
| unsigned char c;
|
| int codepoint;
|
| @@ -11238,7 +11239,7 @@ xmlCheckCdataPush(const xmlChar *utf, int len) {
|
| else
|
| return(-ix);
|
| } else if ((c & 0xe0) == 0xc0) {/* 2-byte code, starts with 110 */
|
| - if (ix + 2 > len) return(-ix);
|
| + if (ix + 2 > len) return(complete ? -ix : ix);
|
| if ((utf[ix+1] & 0xc0 ) != 0x80)
|
| return(-ix);
|
| codepoint = (utf[ix] & 0x1f) << 6;
|
| @@ -11247,7 +11248,7 @@ xmlCheckCdataPush(const xmlChar *utf, int len) {
|
| return(-ix);
|
| ix += 2;
|
| } else if ((c & 0xf0) == 0xe0) {/* 3-byte code, starts with 1110 */
|
| - if (ix + 3 > len) return(-ix);
|
| + if (ix + 3 > len) return(complete ? -ix : ix);
|
| if (((utf[ix+1] & 0xc0) != 0x80) ||
|
| ((utf[ix+2] & 0xc0) != 0x80))
|
| return(-ix);
|
| @@ -11258,7 +11259,7 @@ xmlCheckCdataPush(const xmlChar *utf, int len) {
|
| return(-ix);
|
| ix += 3;
|
| } else if ((c & 0xf8) == 0xf0) {/* 4-byte code, starts with 11110 */
|
| - if (ix + 4 > len) return(-ix);
|
| + if (ix + 4 > len) return(complete ? -ix : ix);
|
| if (((utf[ix+1] & 0xc0) != 0x80) ||
|
| ((utf[ix+2] & 0xc0) != 0x80) ||
|
| ((utf[ix+3] & 0xc0) != 0x80))
|
| @@ -11773,7 +11774,7 @@ xmlParseTryOrFinish(xmlParserCtxtPtr ctxt, int terminate) {
|
| int tmp;
|
|
|
| tmp = xmlCheckCdataPush(ctxt->input->cur,
|
| - XML_PARSER_BIG_BUFFER_SIZE);
|
| + XML_PARSER_BIG_BUFFER_SIZE, 0);
|
| if (tmp < 0) {
|
| tmp = -tmp;
|
| ctxt->input->cur += tmp;
|
| @@ -11796,7 +11797,7 @@ xmlParseTryOrFinish(xmlParserCtxtPtr ctxt, int terminate) {
|
| } else {
|
| int tmp;
|
|
|
| - tmp = xmlCheckCdataPush(ctxt->input->cur, base);
|
| + tmp = xmlCheckCdataPush(ctxt->input->cur, base, 1);
|
| if ((tmp < 0) || (tmp != base)) {
|
| tmp = -tmp;
|
| ctxt->input->cur += tmp;
|
| @@ -14991,7 +14992,7 @@ xmlCleanupParser(void) {
|
| * DICT_FREE:
|
| * @str: a string
|
| *
|
| - * Free a string if it is not owned by the "dict" dictionnary in the
|
| + * Free a string if it is not owned by the "dict" dictionary in the
|
| * current scope
|
| */
|
| #define DICT_FREE(str) \
|
|
|