From 35d523026345d80458df24c72e653db78b5d061d Mon Sep 17 00:00:00 2001 From: Harttle Date: Sun, 22 Mar 2026 22:16:45 +0800 Subject: [PATCH] fix: treat args for replace_first as literal --- src/filters/string.ts | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/filters/string.ts b/src/filters/string.ts index 944857eeb..fe012fb2f 100644 --- a/src/filters/string.ts +++ b/src/filters/string.ts @@ -146,18 +146,16 @@ export function replace_first (this: FilterImpl, v: string, arg1: string, arg2: arg1 = stringify(arg1) arg2 = stringify(arg2) this.context.memoryLimit.use(str.length + arg1.length + arg2.length) - return str.replace(arg1, arg2) + return str.replace(arg1, () => arg2) } export function replace_last (this: FilterImpl, v: string, arg1: string, arg2: string) { const str = stringify(v) - this.context.memoryLimit.use(str.length) const pattern = stringify(arg1) - this.context.memoryLimit.use(pattern.length) + const replacement = stringify(arg2) + this.context.memoryLimit.use(str.length + pattern.length + replacement.length) const index = str.lastIndexOf(pattern) if (index === -1) return str - const replacement = stringify(arg2) - this.context.memoryLimit.use(replacement.length) return str.substring(0, index) + replacement + str.substring(index + pattern.length) }