projects
/
yaz-moved-to-github.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
CCL: fix leak on syntax errors with split-list
[yaz-moved-to-github.git]
/
src
/
cclfind.c
diff --git
a/src/cclfind.c
b/src/cclfind.c
index
9403634
..
0ef140b
100644
(file)
--- 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)
l > 1,
/* auto_group */0);
if (!p2)
+ {
+ ccl_rpn_delete(p_top);
return 0;
return 0;
+ }
if (parent)
{
struct ccl_rpn_node *tmp = ccl_rpn_node_create(CCL_RPN_AND);
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;
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);
p_top = ccl_rpn_node_mkbool(p_top, p1, CCL_RPN_OR);
}
assert(p_top);