From 0e6f26551664f4aa6fa5b4bb5ae0638930f8cf0f Mon Sep 17 00:00:00 2001 From: Sven Wischnowsky Date: Mon, 15 Oct 2001 11:28:07 +0000 Subject: for caching of compiled patterns: remember that singsub() might modify the string it gets, compare with unmodified string (16041) --- ChangeLog | 6 ++++++ Src/cond.c | 2 +- Src/loop.c | 4 ++-- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index bdeb75ab3..fa5028100 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2001-10-15 Sven Wischnowsky + + * Bart: 16038 and 16041: Src/cond.c, Src/loop.c: for caching of + compiled patterns: remember that singsub() might modify the string + it gets, compare with unmodified string + 2001-10-14 Bart Schaefer * 16031: Src/Modules/tcp.c: Don't need ; misc. diff --git a/Src/cond.c b/Src/cond.c index 8a54eeeb2..b34a14be1 100644 --- a/Src/cond.c +++ b/Src/cond.c @@ -202,7 +202,7 @@ evalcond(Estate state) char *opat; int save; - right = opat = dupstring(ecrawstr(state->prog, state->pc, + right = dupstring(opat = ecrawstr(state->prog, state->pc, &htok)); if (htok) singsub(&right); diff --git a/Src/loop.c b/Src/loop.c index 38eeda7d6..57ee11695 100644 --- a/Src/loop.c +++ b/Src/loop.c @@ -543,7 +543,7 @@ execcase(Estate state, int do_exec) if (isset(XTRACE)) { char *pat2, *opat; - opat = pat = ecgetstr(state, EC_DUP, NULL); + pat = dupstring(opat = ecrawstr(state->prog, state->pc, NULL)); singsub(&pat); save = (!(state->prog->flags & EF_HEAP) && !strcmp(pat, opat) && *spprog != dummy_patprog2); @@ -565,7 +565,7 @@ execcase(Estate state, int do_exec) char *opat; int htok = 0; - opat = pat = dupstring(ecrawstr(state->prog, + pat = dupstring(opat = ecrawstr(state->prog, state->pc - 2, &htok)); if (htok) singsub(&pat); -- cgit 1.4.1