obj = valuePop(ctxt);
ret = xmlXPathNewNodeSet(NULL);
- for (i = 0; i < obj->nodesetval->nodeNr; i++) {
- valuePush(ctxt,
- xmlXPathNewNodeSet(obj->nodesetval->nodeTab[i]));
- xmlXPathStringFunction(ctxt, 1);
- if (nargs == 2) {
- valuePush(ctxt, xmlXPathObjectCopy(obj2));
- } else {
+ if (obj->nodesetval) {
+ for (i = 0; i < obj->nodesetval->nodeNr; i++) {
valuePush(ctxt,
xmlXPathNewNodeSet(obj->nodesetval->nodeTab[i]));
+ xmlXPathStringFunction(ctxt, 1);
+ if (nargs == 2) {
+ valuePush(ctxt, xmlXPathObjectCopy(obj2));
+ } else {
+ valuePush(ctxt,
+ xmlXPathNewNodeSet(obj->nodesetval->nodeTab[i]));
+ }
+ xsltDocumentFunction(ctxt, 2);
+ newobj = valuePop(ctxt);
+ ret->nodesetval = xmlXPathNodeSetMerge(ret->nodesetval,
+ newobj->nodesetval);
+ xmlXPathFreeObject(newobj);
}
- xsltDocumentFunction(ctxt, 2);
- newobj = valuePop(ctxt);
- ret->nodesetval = xmlXPathNodeSetMerge(ret->nodesetval,
- newobj->nodesetval);
- xmlXPathFreeObject(newobj);
}
xmlXPathFreeObject(obj);
ret = xmlXPathNewNodeSet(NULL);
- for (i = 0; i < obj2->nodesetval->nodeNr; i++) {
- valuePush(ctxt, xmlXPathObjectCopy(obj1));
- valuePush(ctxt,
- xmlXPathNewNodeSet(obj2->nodesetval->nodeTab[i]));
- xsltKeyFunction(ctxt, 2);
- newobj = valuePop(ctxt);
- ret->nodesetval = xmlXPathNodeSetMerge(ret->nodesetval,
- newobj->nodesetval);
- xmlXPathFreeObject(newobj);
+ if (obj2->nodesetval != NULL) {
+ for (i = 0; i < obj2->nodesetval->nodeNr; i++) {
+ valuePush(ctxt, xmlXPathObjectCopy(obj1));
+ valuePush(ctxt,
+ xmlXPathNewNodeSet(obj2->nodesetval->nodeTab[i]));
+ xsltKeyFunction(ctxt, 2);
+ newobj = valuePop(ctxt);
+ ret->nodesetval = xmlXPathNodeSetMerge(ret->nodesetval,
+ newobj->nodesetval);
+ xmlXPathFreeObject(newobj);
+ }
}
valuePush(ctxt, ret);
} else {
if (res->type == XPATH_NODESET) {
nodelist = res->nodesetval;
#ifdef DEBUG_KEYS
- xsltGenericDebug(xsltGenericDebugContext,
- "xsltInitCtxtKey: %s evaluates to %d nodes\n",
- pattern, nodelist->nodeNr);
+ if (nodelist != NULL)
+ xsltGenericDebug(xsltGenericDebugContext,
+ "xsltInitCtxtKey: %s evaluates to %d nodes\n",
+ pattern, nodelist->nodeNr);
#endif
} else {
#ifdef DEBUG_KEYS