From 48a2fae5f6dd96fb9011a77d103340f6d6181ff6 Mon Sep 17 00:00:00 2001 From: Tobi Lutke Date: Wed, 11 Mar 2026 08:04:40 -0400 Subject: [PATCH] hoist write score check out of render loop: skip increment_write_score when no limits active --- lib/liquid/block_body.rb | 8 ++++++-- lib/liquid/resource_limits.rb | 1 + 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/lib/liquid/block_body.rb b/lib/liquid/block_body.rb index 9908aae4..f452bc77 100644 --- a/lib/liquid/block_body.rb +++ b/lib/liquid/block_body.rb @@ -297,7 +297,11 @@ module Liquid def render_to_output_buffer(context, output) freeze unless frozen? - context.resource_limits.increment_render_score(@nodelist.length) + resource_limits = context.resource_limits + resource_limits.increment_render_score(@nodelist.length) + + # Check if we need per-node write score tracking + check_write = resource_limits.render_length_limit || resource_limits.last_capture_length idx = 0 while (node = @nodelist[idx]) @@ -312,7 +316,7 @@ module Liquid end idx += 1 - context.resource_limits.increment_write_score(output) + resource_limits.increment_write_score(output) if check_write end output diff --git a/lib/liquid/resource_limits.rb b/lib/liquid/resource_limits.rb index ee0c66cb..3b4fc93a 100644 --- a/lib/liquid/resource_limits.rb +++ b/lib/liquid/resource_limits.rb @@ -9,6 +9,7 @@ module Liquid :cumulative_assign_score_limit attr_reader :render_score, :assign_score, + :last_capture_length, :cumulative_render_score, :cumulative_assign_score