X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fcclfind.c;h=0ef140b3e948c9d4bdbb48aaf38c5fdcdc2e1b92;hb=fcb40f9ed16ce6a8ef86997890057af0f7692377;hp=9403634d1b4816c25d0fa7fbcc0edcc2a0a07a88;hpb=e484d47e2e06b836878786d9772d01cb764913c7;p=yaz-moved-to-github.git diff --git a/src/cclfind.c b/src/cclfind.c index 9403634..0ef140b 100644 --- a/src/cclfind.c +++ b/src/cclfind.c @@ -648,7 +648,10 @@ static struct ccl_rpn_node *split_recur(CCL_parser cclp, ccl_qualifier_t *qa, l > 1, /* auto_group */0); if (!p2) + { + ccl_rpn_delete(p_top); return 0; + } if (parent) { struct ccl_rpn_node *tmp = ccl_rpn_node_create(CCL_RPN_AND); @@ -660,6 +663,12 @@ static struct ccl_rpn_node *split_recur(CCL_parser cclp, ccl_qualifier_t *qa, p1 = split_recur(cclp, qa, p2, ar + l, sz - l); else p1 = p2; + if (!p1) + { + ccl_rpn_delete(p2); + ccl_rpn_delete(p_top); + return 0; + } p_top = ccl_rpn_node_mkbool(p_top, p1, CCL_RPN_OR); } assert(p_top);