[libxslt] Remove case labels with XPointer location types



commit 36bbe5ab3c7bdd2f59afa0592b738e6369b827d7
Author: Nick Wellnhofer <wellnhofer aevum de>
Date:   Thu Apr 21 04:53:46 2022 +0200

    Remove case labels with XPointer location types

 libxslt/functions.c | 36 +++++++++---------------------------
 python/types.c      |  3 ---
 2 files changed, 9 insertions(+), 30 deletions(-)
---
diff --git a/libxslt/functions.c b/libxslt/functions.c
index fa20f317..fa8b6d93 100644
--- a/libxslt/functions.c
+++ b/libxslt/functions.c
@@ -187,36 +187,18 @@ xsltDocumentFunctionLoadDocument(xmlXPathParserContextPtr ctxt, xmlChar* URI)
     xmlXPathFreeContext(xptrctxt);
 #endif /* LIBXML_XPTR_ENABLED */
 
-    if (resObj == NULL)
-       goto out_fragment;
-
-    switch (resObj->type) {
-       case XPATH_NODESET:
-           break;
-       case XPATH_UNDEFINED:
-       case XPATH_BOOLEAN:
-       case XPATH_NUMBER:
-       case XPATH_STRING:
-       case XPATH_POINT:
-       case XPATH_USERS:
-       case XPATH_XSLT_TREE:
-       case XPATH_RANGE:
-       case XPATH_LOCATIONSET:
-           xsltTransformError(tctxt, NULL, NULL,
-               "document() : XPointer does not select a node set: #%s\n",
-               fragment);
-       goto out_object;
+    if ((resObj != NULL) && (resObj->type != XPATH_NODESET)) {
+        xsltTransformError(tctxt, NULL, NULL,
+            "document() : XPointer does not select a node set: #%s\n",
+            fragment);
+        xmlXPathFreeObject(resObj);
+        resObj = NULL;
     }
 
-    valuePush(ctxt, resObj);
-    xmlFree(fragment);
-    return;
-
-out_object:
-    xmlXPathFreeObject(resObj);
-
 out_fragment:
-    valuePush(ctxt, xmlXPathNewNodeSet(NULL));
+    if (resObj == NULL)
+        resObj = xmlXPathNewNodeSet(NULL);
+    valuePush(ctxt, resObj);
     xmlFree(fragment);
 }
 
diff --git a/python/types.c b/python/types.c
index 583b2929..1617cb96 100644
--- a/python/types.c
+++ b/python/types.c
@@ -491,9 +491,6 @@ libxml_xmlXPathObjectPtrWrap(xmlXPathObjectPtr obj)
         case XPATH_STRING:
             ret = PY_IMPORT_STRING((char *) obj->stringval);
             break;
-        case XPATH_POINT:
-        case XPATH_RANGE:
-        case XPATH_LOCATIONSET:
         default:
 #ifdef DEBUG
             printf("Unable to convert XPath object type %d\n", obj->type);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]