From 28f29433e40891a5e5b4c19e4ba79b1bc5f95881 Mon Sep 17 00:00:00 2001 From: Tobi Lutke Date: Wed, 11 Mar 2026 07:43:09 -0400 Subject: [PATCH] avoid empty array allocation in evaluate_filter_expressions for no-arg filters --- 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 f807d417..4d2d84df 100644 --- a/lib/liquid/variable.rb +++ b/lib/liquid/variable.rb @@ -354,15 +354,19 @@ module Liquid end def evaluate_filter_expressions(context, filter_args, filter_kwargs) - parsed_args = filter_args.map { |expr| context.evaluate(expr) } if filter_kwargs + parsed_args = filter_args.map { |expr| context.evaluate(expr) } parsed_kwargs = {} filter_kwargs.each do |key, expr| parsed_kwargs[key] = context.evaluate(expr) end parsed_args << parsed_kwargs + parsed_args + elsif filter_args.empty? + Const::EMPTY_ARRAY + else + filter_args.map { |expr| context.evaluate(expr) } end - parsed_args end class ParseTreeVisitor < Liquid::ParseTreeVisitor