diff --git a/lib/src/clixon_xpath_eval.c b/lib/src/clixon_xpath_eval.c index fecf8ce3..bc54e8dc 100644 --- a/lib/src/clixon_xpath_eval.c +++ b/lib/src/clixon_xpath_eval.c @@ -354,7 +354,7 @@ nodetest_recursive(cxobj *xn, /*! Evaluate xpath step rule of an XML tree * * @param[in] xc0 Incoming context - * @param[in] xs XPath node tree + * @param[in] xs Parsed XPath node tree * @param[in] nsc XML Namespace context * @param[in] localonly Skip prefix and namespace tests (non-standard) * @param[out] xrp Resulting context @@ -405,12 +405,25 @@ xp_eval_step(xp_ctx *xc0, xc->xc_descendant = 0; } else{ + // XXX The handling of vec/vec0 is too complex for (i=0; ixc_size; i++){ + cxobj **vec0 = NULL; + int veclen0 = 0; + int j; + xv = xc->xc_nodeset[i]; x = NULL; - if ((ret = xpath_optimize_check(xs, xv, &vec, &veclen)) < 0) + if ((ret = xpath_optimize_check(xs, xv, &vec0, &veclen0)) < 0) goto done; - if (ret == 0){/* regular code, no optimization made */ + if (ret == 1){ + for (j=0; jxs_c0 is nodetest */ if (nodetest == NULL ||