diff options
author | Rainer Gerhards <rgerhards@adiscon.com> | 2012-09-21 18:58:01 +0200 |
---|---|---|
committer | Rainer Gerhards <rgerhards@adiscon.com> | 2012-09-21 18:58:01 +0200 |
commit | 1636c64ef0a5173ffbf25b47b8d714e8df77b9c6 (patch) | |
tree | 3e347ae77279a0d84b9afb1fbcd635033ba5ee50 /grammar | |
parent | aecd8a8a82ce57fb306cf8a1d6230a76ca22d0ad (diff) | |
download | rsyslog-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.c | 9 |
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); \ |