diff --git a/libexslt/functions.c b/libexslt/functions.c index 8d35a7ae..a54ee70c 100644 --- a/libexslt/functions.c +++ b/libexslt/functions.c @@ -617,8 +617,13 @@ exsltFuncResultComp (xsltStylesheetPtr style, xmlNodePtr inst, * instanciation of a func:result element. */ for (test = inst->parent; test != NULL; test = test->parent) { - if (IS_XSLT_ELEM(test) && - IS_XSLT_NAME(test, "stylesheet")) { + if (/* Traversal has reached the top-level document without + * finding a func:function ancestor. */ + (test != NULL && test->type == XML_DOCUMENT_NODE) || + /* Traversal reached a stylesheet-namespace node, + * and has left the function namespace. */ + (IS_XSLT_ELEM(test) && + IS_XSLT_NAME(test, "stylesheet"))) { xsltGenericError(xsltGenericErrorContext, "func:result element not a descendant " "of a func:function\n");