From 2a7235421fcd59b449c84306d059f22b4c5f0865 Mon Sep 17 00:00:00 2001 From: Jeremy Evans Date: Thu, 29 Apr 2021 11:58:12 -0700 Subject: Fix SortedSet not being sorted the first time when rbtree is used Fixes [Bug #17841] --- lib/set.rb | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'lib/set.rb') diff --git a/lib/set.rb b/lib/set.rb index 5a96c81832..1b0e3ae6fc 100644 --- a/lib/set.rb +++ b/lib/set.rb @@ -691,6 +691,7 @@ class SortedSet < Set def setup # :nodoc: @@setup and return + ret = nil @@mutex.synchronize do # a hack to shut up warning @@ -698,6 +699,7 @@ class SortedSet < Set begin require 'rbtree' + ret = :rbtree module_eval <<-END, __FILE__, __LINE__+1 def initialize(*args) @@ -712,6 +714,7 @@ class SortedSet < Set alias << add END rescue LoadError + ret = true module_eval <<-END, __FILE__, __LINE__+1 def initialize(*args) @keys = nil @@ -788,13 +791,17 @@ class SortedSet < Set remove_method :old_init @@setup = true + ret end end end def initialize(*args, &block) # :nodoc: - SortedSet.setup - @keys = nil + if SortedSet.setup == :rbtree + @hash = RBTree.new + else + @keys = nil + end super end end -- cgit v1.2.3