[Libreoffice-commits] .: Branch 'libreoffice-3-3' - libxml2/libxml2-xpath.patch libxml2/makefile.mk

René Engelhard rene at kemper.freedesktop.org
Mon Dec 13 10:34:33 PST 2010


 libxml2/libxml2-xpath.patch |   49 ++++++++++++++++++++++++++++++++++++++++++++
 libxml2/makefile.mk         |    1 
 2 files changed, 50 insertions(+)

New commits:
commit e2c8a5a5d868e5aa29e01572b0a3593e1ecf1970
Author: Rene Engelhard <rene at debian.org>
Date:   Mon Dec 13 19:04:33 2010 +0100

    XPATH handling fix
    
    Signed off by Petr Mladek <pmladek at suse.cz>

diff --git a/libxml2/libxml2-xpath.patch b/libxml2/libxml2-xpath.patch
new file mode 100644
index 0000000..e02982f
--- /dev/null
+++ b/libxml2/libxml2-xpath.patch
@@ -0,0 +1,49 @@
+--- misc/libxml2-2.7.6/xpath.c
++++ misc/build/libxml2-2.7.6/xpath.c
+@@ -8104,9 +8104,17 @@
+ xmlNodePtr
+ xmlXPathNextFollowing(xmlXPathParserContextPtr ctxt, xmlNodePtr cur) {
+     if ((ctxt == NULL) || (ctxt->context == NULL)) return(NULL);
+-    if (cur != NULL && cur->children != NULL)
+-        return cur->children ;
+-    if (cur == NULL) cur = ctxt->context->node;
++    if ((cur != NULL) && (cur->type  != XML_ATTRIBUTE_NODE) &&
++        (cur->type != XML_NAMESPACE_DECL) && (cur->children != NULL))
++        return(cur->children);
++
++    if (cur == NULL) {
++        cur = ctxt->context->node;
++        if (cur->type == XML_NAMESPACE_DECL)
++            return(NULL);
++        if (cur->type == XML_ATTRIBUTE_NODE)
++            cur = cur->parent;
++    }
+     if (cur == NULL) return(NULL) ; /* ERROR */
+     if (cur->next != NULL) return(cur->next) ;
+     do {
+@@ -8160,8 +8168,13 @@
+ xmlXPathNextPreceding(xmlXPathParserContextPtr ctxt, xmlNodePtr cur)
+ {
+     if ((ctxt == NULL) || (ctxt->context == NULL)) return(NULL);
+-    if (cur == NULL)
++    if (cur == NULL) {
+         cur = ctxt->context->node;
++        if (cur->type == XML_NAMESPACE_DECL)
++            return(NULL);
++        if (cur->type == XML_ATTRIBUTE_NODE)
++            return(cur->parent);
++    }
+     if (cur == NULL)
+ 	return (NULL);
+     if ((cur->prev != NULL) && (cur->prev->type == XML_DTD_NODE))
+@@ -8205,8 +8218,8 @@
+         cur = ctxt->context->node;
+         if (cur == NULL)
+             return (NULL);
+-	if (cur->type == XML_NAMESPACE_DECL)
+-	    cur = (xmlNodePtr)((xmlNsPtr)cur)->next;
++        if (cur->type == XML_NAMESPACE_DECL)
++            return (NULL);
+         ctxt->ancestor = cur->parent;
+     }
+     if ((cur->prev != NULL) && (cur->prev->type == XML_DTD_NODE))
diff --git a/libxml2/makefile.mk b/libxml2/makefile.mk
index 0c69c36..c325747 100644
--- a/libxml2/makefile.mk
+++ b/libxml2/makefile.mk
@@ -51,6 +51,7 @@ TARFILE_MD5=7740a8ec23878a2f50120e1faa2730f2
 PATCH_FILES=libxml2-configure.patch \
             libxml2-mingw.patch \
             libxml2-gnome599717.patch \
+            libxml2-xpath.patch \
             libxml2-global-symbols.patch \
             libxml2-aix.patch \
             libxml2-vc10.patch


More information about the Libreoffice-commits mailing list