From aa2c5e904ee8b5095498f97a5e89fa47cad886db Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Tue, 13 Apr 2021 07:26:46 -0700 Subject: regex: regsub wrongly destructive. * regex.c (regsub): When the regex argument is actually a function, we must copy the string, because replace_str is destructive. --- regex.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/regex.c b/regex.c index e4a1e810..a0eecff8 100644 --- a/regex.c +++ b/regex.c @@ -2875,10 +2875,11 @@ val regsub(val regex, val repl, val str) { val rf = from(range); val rt = to(range); + val scopy = copy_str(str); - return replace_str(str, if3(isfunc, - funcall1(repl, sub_str(str, rf, rt)), - repl), + return replace_str(scopy, if3(isfunc, + funcall1(repl, sub_str(scopy, rf, rt)), + repl), rf, rt); } } else { -- cgit v1.2.3