From 7d8fcb4202b0a12ffbff9be30b0daef9cca7549a Mon Sep 17 00:00:00 2001 From: Watson Date: Fri, 6 Jul 2012 14:54:42 +0900 Subject: [PATCH] get rid of uncatchable Objective-C exception in NSDictionary#{delete_if, select} which related to #124 --- NSDictionary.m | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/NSDictionary.m b/NSDictionary.m index 3f4d6e2be..db067e526 100644 --- a/NSDictionary.m +++ b/NSDictionary.m @@ -308,7 +308,8 @@ CHECK_MUTABLE(rcv); RETURN_ENUMERATOR(rcv, 0, 0); NSMutableArray *ary = [NSMutableArray new]; - for (id key in rcv) { + // TODO: should handle the element which is inserted in iterator block. + for (id key in [rcv allKeys]) { id value = [rcv objectForKey:key]; if (RTEST(rb_yield_values(2, OC2RB(key), OC2RB(value)))) { [ary addObject:key]; @@ -325,7 +326,8 @@ CHECK_MUTABLE(rcv); RETURN_ENUMERATOR(rcv, 0, 0); NSMutableDictionary *dict = [NSMutableDictionary new]; - for (id key in rcv) { + // TODO: should handle the element which is inserted in iterator block. + for (id key in [rcv allKeys]) { id value = [rcv objectForKey:key]; if (RTEST(rb_yield_values(2, OC2RB(key), OC2RB(value)))) { TRY_MOP([dict setObject:value forKey:key]);