From 24b9653366c42db65191394ce25ad9b82d3300a5 Mon Sep 17 00:00:00 2001 From: Kyle Banker Date: Tue, 15 Nov 2011 12:43:29 -0500 Subject: [PATCH] RUBY-359 Fix for OrderedHash on 1.8.7 --- lib/bson/ordered_hash.rb | 7 ++++--- test/bson/ordered_hash_test.rb | 2 ++ 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/bson/ordered_hash.rb b/lib/bson/ordered_hash.rb index ab9a4be..19b3e1d 100644 --- a/lib/bson/ordered_hash.rb +++ b/lib/bson/ordered_hash.rb @@ -130,11 +130,12 @@ module BSON end def delete_if(&block) - self.each do |k,v| - if yield k, v - delete(k) + keys.each do |key| + if yield key, self[key] + delete(key) end end + self end def reject(&block) diff --git a/test/bson/ordered_hash_test.rb b/test/bson/ordered_hash_test.rb index 20e3138..8ace478 100644 --- a/test/bson/ordered_hash_test.rb +++ b/test/bson/ordered_hash_test.rb @@ -212,6 +212,8 @@ class OrderedHashTest < Test::Unit::TestCase assert @oh.keys.include?('z') @oh.delete_if { |k,v| k == 'z' } assert !@oh.keys.include?('z') + @oh.delete_if { |k, v| v > 0 } + assert @oh.keys.empty? end def test_reject