# HG changeset patch
# User Nick Wellnhofer <wellnhofer@aevum.de>
# Date 1650509626 -7200
#      Thu Apr 21 04:53:46 2022 +0200
# Node ID 564229366f81abe571a4d7f8a2b51154e3cc1b2b
# Parent  068dd813f30df1f540b5f3a1f9892b45bc62397b
Remove case labels with XPointer location types

diff --git a/libxslt/functions.c b/libxslt/functions.c
--- a/libxslt/functions.c
+++ b/libxslt/functions.c
@@ -187,37 +187,19 @@
     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;
     }
 
+out_fragment:
+    if (resObj == NULL)
+        resObj = xmlXPathNewNodeSet(NULL);
     valuePush(ctxt, resObj);
     xmlFree(fragment);
-    return;
-
-out_object:
-    xmlXPathFreeObject(resObj);
-
-out_fragment:
-    valuePush(ctxt, xmlXPathNewNodeSet(NULL));
-    xmlFree(fragment);
 }
 
 /**
diff --git a/python/types.c b/python/types.c
--- a/python/types.c
+++ b/python/types.c
@@ -491,9 +491,6 @@
         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);