summaryrefslogtreecommitdiff
path: root/libxml2/libxml2-fixes.patch
blob: 1a2b24879e6f042840254ebf35280f7c90dfa432 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
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;