7a68eb7d4da510a798a22fe6cf258f8385c29269 jcasper Wed Oct 17 14:31:24 2018 -0700 Fix for rqlParseDump crashing on array nodes, refs #22286 diff --git src/lib/rqlParse.c src/lib/rqlParse.c index fe4ad9a..c172189 100644 --- src/lib/rqlParse.c +++ src/lib/rqlParse.c @@ -314,30 +314,31 @@ struct rqlParse *collection = rqlParseAtom(tkz); struct rqlParse *p = collection; char *tok = tokenizerNext(tkz); if (tok == NULL) tokenizerReuse(tkz); else if (tok[0] == '[') { // struct rqlParse *index = rqlParseExpression(tkz); struct rqlParse *index = rqlParseAtom(tkz); index = rqlParseCoerce(index, rqlTypeInt); skipOverRequired(tkz, "]"); AllocVar(p); p->op = rqlOpArrayIx; p->type = rqlTypeString; p->children = collection; + p->val.s = cloneString(""); collection->next = index; } else tokenizerReuse(tkz); return p; } static struct rqlParse *rqlParseUnaryMinus(struct tokenizer *tkz) /* Return unary minus sort of parse tree if there's a leading '-' */ { char *tok = tokenizerMustHaveNext(tkz); if (tok[0] == '-') { struct rqlParse *c = rqlParseIndex(tkz); @@ -971,16 +972,15 @@ void rqlStatementFree(struct rqlStatement **pRql) /* Free up an rql statement. */ { struct rqlStatement *rql = *pRql; if (rql != NULL) { freeMem(rql->command); slFreeList(&rql->fieldList); slFreeList(&rql->tableList); if (rql->whereClause !=NULL) rqlParseFreeRecursive(rql->whereClause); slFreeList(&rql->whereVarList); freez(pRql); } } -