summaryrefslogtreecommitdiffstats
path: root/grammar/rainerscript.c
diff options
context:
space:
mode:
authorRainer Gerhards <rgerhards@adiscon.com>2013-10-10 10:20:16 +0200
committerRainer Gerhards <rgerhards@adiscon.com>2013-10-10 10:20:16 +0200
commit248474b74f4e33c09fda855a74a02c7029f6e2f9 (patch)
tree178f50cf199e6d52a2a165755e3f43ca6431afd7 /grammar/rainerscript.c
parent535968f989219a01149fae7876bb83c0fa3aeaec (diff)
downloadrsyslog-248474b74f4e33c09fda855a74a02c7029f6e2f9.tar.gz
rsyslog-248474b74f4e33c09fda855a74a02c7029f6e2f9.tar.bz2
rsyslog-248474b74f4e33c09fda855a74a02c7029f6e2f9.zip
bugfix: array-based ==/!= comparisions lead to invalid results
This was a regression introduced in 7.3.5 bei the PRI optimizer
Diffstat (limited to 'grammar/rainerscript.c')
-rw-r--r--grammar/rainerscript.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/grammar/rainerscript.c b/grammar/rainerscript.c
index 2b8d600d..f4833679 100644
--- a/grammar/rainerscript.c
+++ b/grammar/rainerscript.c
@@ -2779,7 +2779,7 @@ cnfexprOptimize_CMP_var(struct cnfexpr *expr)
parser_errmsg("invalid facility '%s', expression will always "
"evaluate to FALSE", cstr);
} else {
- /* we can acutally optimize! */
+ /* we can actually optimize! */
DBGPRINTF("optimizer: change comparison OP to FUNC prifilt()\n");
func = cnffuncNew_prifilt(fac);
if(expr->nodetype == CMP_NE)
@@ -2858,7 +2858,7 @@ cnfexprOptimize_AND_OR(struct cnfexpr *expr)
static inline void
cnfexprOptimize_CMPEQ_arr(struct cnfarray *arr)
{
- DBGPRINTF("optimizer: sorting array for CMP_EQ/NEQ comparison\n");
+ DBGPRINTF("optimizer: sorting array of %d members for CMP_EQ/NEQ comparison\n", arr->nmemb);
qsort(arr->arr, arr->nmemb, sizeof(es_str_t*), qs_arrcmp);
}
@@ -2922,7 +2922,8 @@ cnfexprOptimize(struct cnfexpr *expr)
}
if(expr->l->nodetype == 'V') {
expr = cnfexprOptimize_CMP_var(expr);
- } else if(expr->r->nodetype == 'A') {
+ }
+ if(expr->r->nodetype == 'A') {
cnfexprOptimize_CMPEQ_arr((struct cnfarray *)expr->r);
}
break;