Skip to content

Commit abc058b

Browse files
committed
fix: precise memoryLimit for string replace
1 parent 521177e commit abc058b

1 file changed

Lines changed: 4 additions & 2 deletions

File tree

src/filters/string.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -138,8 +138,10 @@ export function replace (this: FilterImpl, v: string, pattern: string, replaceme
138138
const str = stringify(v)
139139
pattern = stringify(pattern)
140140
replacement = stringify(replacement)
141-
this.context.memoryLimit.use(str.length + pattern.length + replacement.length)
142-
return str.split(pattern).join(replacement)
141+
const parts = str.split(pattern)
142+
const outputSize = str.length + (parts.length - 1) * (replacement.length - pattern.length)
143+
this.context.memoryLimit.use(outputSize)
144+
return parts.join(replacement)
143145
}
144146

145147
export function replace_first (this: FilterImpl, v: string, arg1: string, arg2: string) {

0 commit comments

Comments
 (0)