From 4d60d936edce2ab49cb36c47d0d1bdc0029a0ed2 Mon Sep 17 00:00:00 2001 From: "Muhammad Syafri, S.Kom" <105954036+Jualhosting@users.noreply.github.com> Date: Wed, 27 May 2026 21:20:33 +0700 Subject: [PATCH] perf(replacer): optimize memory allocation for file placeholders (#7773) Co-authored-by: jalikajalika5 <105954036+jalikajalika5@users.noreply.github.com> --- replacer.go | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/replacer.go b/replacer.go index 2ab02b602..2fa8ef137 100644 --- a/replacer.go +++ b/replacer.go @@ -427,14 +427,10 @@ func readFileIntoBuffer(filename string, size int) ([]byte, error) { } defer file.Close() - buffer := make([]byte, size) - n, err := file.Read(buffer) - if err != nil && err != io.EOF { - return nil, err - } - - // slice the buffer to the actual size - return buffer[:n], nil + // io.LimitReader ensures we never read more than 'size' bytes. + // io.ReadAll starts with a small buffer and grows it as needed, + // preventing a massive 1MB allocation for small files. + return io.ReadAll(io.LimitReader(file, int64(size))) } // ReplacementFunc is a function that is called when a