From 91df1795c5bc9659ff7cec6c8f5a1b3eade1145b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Rodr=C3=ADguez?= Date: Mon, 24 Mar 2025 17:19:09 +0100 Subject: [PATCH] [rubygems/rubygems] Split finding and removing invalid platforms I don't like traversing the array and modifying it at the same time while it seems to work. https://github.com/rubygems/rubygems/commit/6551c74c27 --- lib/bundler/definition.rb | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/lib/bundler/definition.rb b/lib/bundler/definition.rb index a5ec2d64c7..491d4f11cb 100644 --- a/lib/bundler/definition.rb +++ b/lib/bundler/definition.rb @@ -1137,16 +1137,17 @@ module Bundler def remove_invalid_platforms! return if Bundler.frozen_bundle? - platforms.reverse_each do |platform| + invalid_platforms = platforms.select do |platform| next if local_platform == platform || @new_platforms.include?(platform) || @path_changes || @dependency_changes || - @locked_spec_with_invalid_deps || - !spec_set_incomplete_for_platform?(@originally_locked_specs, platform) + @locked_spec_with_invalid_deps - remove_platform(platform) + spec_set_incomplete_for_platform?(@originally_locked_specs, platform) end + + @platforms -= invalid_platforms end def spec_set_incomplete_for_platform?(spec_set, platform)