From abc058be0f33d6372cd2216f4945183167abeb25 Mon Sep 17 00:00:00 2001 From: Harttle Date: Thu, 26 Mar 2026 19:35:40 +0800 Subject: [PATCH] fix: precise memoryLimit for string replace --- src/filters/string.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/filters/string.ts b/src/filters/string.ts index 3ef570566..f96d4b492 100644 --- a/src/filters/string.ts +++ b/src/filters/string.ts @@ -138,8 +138,10 @@ export function replace (this: FilterImpl, v: string, pattern: string, replaceme const str = stringify(v) pattern = stringify(pattern) replacement = stringify(replacement) - this.context.memoryLimit.use(str.length + pattern.length + replacement.length) - return str.split(pattern).join(replacement) + const parts = str.split(pattern) + const outputSize = str.length + (parts.length - 1) * (replacement.length - pattern.length) + this.context.memoryLimit.use(outputSize) + return parts.join(replacement) } export function replace_first (this: FilterImpl, v: string, arg1: string, arg2: string) {