From c252d50aa0a591c40043407ec9d259b7859dead3 Mon Sep 17 00:00:00 2001 From: Tobi Lutke Date: Wed, 11 Mar 2026 10:12:26 -0400 Subject: [PATCH] =?UTF-8?q?Avoid=20expr=5Fmarkup=20byteslice=20when=20name?= =?UTF-8?q?=20is=20entire=20markup=20string=20(no=20whitespace,=20no=20fil?= =?UTF-8?q?ters)\n\nResult:=20{"status":"keep","combined=5F=C2=B5s":4277,"?= =?UTF-8?q?parse=5F=C2=B5s":3057,"render=5F=C2=B5s":1220,"allocations":270?= =?UTF-8?q?26}?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/liquid/variable.rb | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/liquid/variable.rb b/lib/liquid/variable.rb index bd7a6727..a6c016fa 100644 --- a/lib/liquid/variable.rb +++ b/lib/liquid/variable.rb @@ -151,8 +151,12 @@ module Liquid pos += 1 end - # Resolve the name expression - expr_markup = markup.byteslice(name_start, name_end - name_start) + # Resolve the name expression — avoid byteslice when markup is already the name + expr_markup = if name_start == 0 && name_end == len + markup # no whitespace, no filters — reuse the string + else + markup.byteslice(name_start, name_end - name_start) + end cache = parse_context.expression_cache ss = parse_context.string_scanner