summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRainer Gerhards <rgerhards@adiscon.com>2013-10-10 12:00:17 +0200
committerRainer Gerhards <rgerhards@adiscon.com>2013-10-10 12:00:17 +0200
commita4d4bcacea476fb29c7fb99e837b81780805f2b5 (patch)
tree8deb457ee16786508a8c271e1fe8972c3a5a6faa
parentc1992ed1ad8fe41788665c88ed94f3648dce3bdc (diff)
parent81e9afee45c669a0d5a29757cae70e6e224541be (diff)
downloadrsyslog-a4d4bcacea476fb29c7fb99e837b81780805f2b5.tar.gz
rsyslog-a4d4bcacea476fb29c7fb99e837b81780805f2b5.tar.bz2
rsyslog-a4d4bcacea476fb29c7fb99e837b81780805f2b5.zip
Merge branch 'v7-stable'
-rw-r--r--ChangeLog4
-rw-r--r--configure.ac2
-rw-r--r--grammar/rainerscript.c7
3 files changed, 9 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index 7f0a74a2..a2577755 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -131,6 +131,10 @@ Version 7.4.5 [v7.4-stable] 2013-09-??
bugfix, that should be applied to the stable branch.
closes: http://bugzilla.adiscon.com/show_bug.cgi?id=477
Thanks to Muri Cicanor for initiating the discussion
+- now requires libestr 0.1.7 as early versions had a nasty bug in
+ string comparisons
+- bugfix: array-based ==/!= comparisions lead to invalid results
+ This was a regression introduced in 7.3.5 bei the PRI optimizer
- bugfix: omprog blocked signals to executed programs
The made it impossible to send signals to programs executed via
omprog.
diff --git a/configure.ac b/configure.ac
index 08b241c5..6e10a3b3 100644
--- a/configure.ac
+++ b/configure.ac
@@ -32,7 +32,7 @@ AC_CANONICAL_HOST
PKG_PROG_PKG_CONFIG
# modules we require
-PKG_CHECK_MODULES(LIBESTR, libestr >= 0.1.5)
+PKG_CHECK_MODULES(LIBESTR, libestr >= 0.1.7)
PKG_CHECK_MODULES([JSON_C], [json],, [
PKG_CHECK_MODULES([JSON_C], [json-c])
])
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;