From: "kddnewton (Kevin Newton) via ruby-core" Date: 2025-01-06T00:57:02+00:00 Subject: [ruby-core:120491] [Ruby master Bug#21001] unexpected nil result from proc with ensure and next Issue #21001 has been updated by kddnewton (Kevin Newton). Assignee set to prism ---------------------------------------- Bug #21001: unexpected nil result from proc with ensure and next https://bugs.ruby-lang.org/issues/21001#change-111275 * Author: aharpervc (Andrew Harper) * Status: Open * Assignee: prism * ruby -v: ruby 3.4.1 (2024-12-25 revision 48d4efcb85) +PRISM [x86_64-linux] * Backport: 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN, 3.4: UNKNOWN ---------------------------------------- Hello, I have noticed a different program behavior in Ruby 3.4 compared to previous versions. This is a simplified example for debugging that returns the expected result in Ruby 3.3 but nil in Ruby 3.4 Here is the example program: ``` ruby puts "Ruby: #{RUBY_VERSION}" # okay all versions # RUN_ARRAY = [1] # fails ruby 3.4 only RUN_ARRAY = [1,2] MAP_PROC = Proc.new do |&blk| block_results = [] RUN_ARRAY.each do |value| block_value = blk.call(value) block_results.push block_value end block_results ensure next block_results end test_fn_results = MAP_PROC.call do |value| break if value > 1 next value end puts test_fn_results.inspect ``` For Ruby 3.3.6 the output is: ``` Ruby: 3.3.6 [1] ``` For Ruby 3.4.1 the output is: ``` Ruby: 3.4.1 nil ``` I am expecting the Ruby 3.3 output even for Ruby 3.4. This appears to be a bug, since the program implementation is unchanged. Perhaps there is a bug in the code that is now only showing up with Ruby 3.4, but that seemed unlikely since it's working as expected in other versions. Thank you -- https://bugs.ruby-lang.org/ ______________________________________________ ruby-core mailing list -- ruby-core@ml.ruby-lang.org To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/