# 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);