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