summaryrefslogtreecommitdiffstats
path: root/grammar
diff options
context:
space:
mode:
authorRainer Gerhards <rgerhards@adiscon.com>2012-09-21 18:58:01 +0200
committerRainer Gerhards <rgerhards@adiscon.com>2012-09-21 18:58:01 +0200
commit1636c64ef0a5173ffbf25b47b8d714e8df77b9c6 (patch)
tree3e347ae77279a0d84b9afb1fbcd635033ba5ee50 /grammar
parentaecd8a8a82ce57fb306cf8a1d6230a76ca22d0ad (diff)
downloadrsyslog-1636c64ef0a5173ffbf25b47b8d714e8df77b9c6.tar.gz
rsyslog-1636c64ef0a5173ffbf25b47b8d714e8df77b9c6.tar.xz
rsyslog-1636c64ef0a5173ffbf25b47b8d714e8df77b9c6.zip
Improve script execution speed for important string-comparisons
Diffstat (limited to 'grammar')
-rw-r--r--grammar/rainerscript.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/grammar/rainerscript.c b/grammar/rainerscript.c
index 9440dd2f..d0c2dc6b 100644
--- a/grammar/rainerscript.c
+++ b/grammar/rainerscript.c
@@ -1025,8 +1025,13 @@ evalVar(struct cnfvar *var, void *usrptr, struct var *ret)
#define PREP_TWO_STRINGS \
cnfexprEval(expr->l, &l, usrptr); \
estr_l = var2String(&l, &bMustFree2); \
- cnfexprEval(expr->r, &r, usrptr); \
- estr_r = var2String(&r, &bMustFree)
+ if(expr->r->nodetype == 'S') { \
+ estr_r = ((struct cnfstringval*)expr->r)->estr;\
+ bMustFree = 0; \
+ } else { \
+ cnfexprEval(expr->r, &r, usrptr); \
+ estr_r = var2String(&r, &bMustFree); \
+ }
#define FREE_TWO_STRINGS \
if(bMustFree) es_deleteStr(estr_r); \