diff -ru misc/libxml2-2.7.8/parser.c misc/build/libxml2-2.7.8/parser.c --- misc/libxml2-2.7.8/parser.c 2010-11-04 10:55:45.000000000 -0500 +++ misc/build/libxml2-2.7.8/parser.c 2012-12-20 14:53:03.000000000 -0500 @@ -2709,7 +2709,7 @@ buffer[nbchars++] = '&'; if (nbchars > buffer_size - i - XML_PARSER_BUFFER_SIZE) { - growBuffer(buffer, XML_PARSER_BUFFER_SIZE); + growBuffer(buffer, i + XML_PARSER_BUFFER_SIZE); } for (;i > 0;i--) buffer[nbchars++] = *cur++; diff -ru misc/libxml2-2.7.8/xpointer.c misc/build/libxml2-2.7.8/xpointer.c --- misc/libxml2-2.7.8/xpointer.c 2010-10-12 01:25:33.000000000 -0500 +++ misc/build/libxml2-2.7.8/xpointer.c 2012-12-20 14:53:03.000000000 -0500 @@ -1007,21 +1007,14 @@ NEXT; break; } - *cur++ = CUR; } else if (CUR == '(') { level++; - *cur++ = CUR; } else if (CUR == '^') { - NEXT; - if ((CUR == ')') || (CUR == '(') || (CUR == '^')) { - *cur++ = CUR; - } else { - *cur++ = '^'; - *cur++ = CUR; - } - } else { - *cur++ = CUR; + if ((NXT(1) == ')') || (NXT(1) == '(') || (NXT(1) == '^')) { + NEXT; + } } + *cur++ = CUR; NEXT; } *cur = 0;