diff --git a/libxslt/functions.c b/libxslt/functions.c index 068dd813f30df1f540b5f3a1f9892b45bc62397b_bGlieHNsdC9mdW5jdGlvbnMuYw==..564229366f81abe571a4d7f8a2b51154e3cc1b2b_bGlieHNsdC9mdW5jdGlvbnMuYw== 100644 --- a/libxslt/functions.c +++ b/libxslt/functions.c @@ -187,24 +187,11 @@ 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; } @@ -209,4 +196,7 @@ } +out_fragment: + if (resObj == NULL) + resObj = xmlXPathNewNodeSet(NULL); valuePush(ctxt, resObj); xmlFree(fragment); @@ -211,13 +201,5 @@ 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 index 068dd813f30df1f540b5f3a1f9892b45bc62397b_cHl0aG9uL3R5cGVzLmM=..564229366f81abe571a4d7f8a2b51154e3cc1b2b_cHl0aG9uL3R5cGVzLmM= 100644 --- 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);