From 1636c64ef0a5173ffbf25b47b8d714e8df77b9c6 Mon Sep 17 00:00:00 2001 From: Rainer Gerhards Date: Fri, 21 Sep 2012 18:58:01 +0200 Subject: Improve script execution speed for important string-comparisons --- grammar/rainerscript.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'grammar/rainerscript.c') 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); \ -- cgit v1.2.3