summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--hash.c2
2 files changed, 7 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index b14b9286dd..a1bb258244 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Wed Feb 6 22:25:00 2013 Charlie Somerville <charlie@charliesomerville.com>
+
+ * hash.c (env_reject_bang): hide keys array from ObjectSpace
+ * hash.c (env_select_bang): ditto
+
Wed Feb 6 17:33:01 2013 Nobuyoshi Nakada <nobu@ruby-lang.org>
* configure.in (multiarch): add option to move architecture dependent
diff --git a/hash.c b/hash.c
index 48201b6e60..a2261bdf93 100644
--- a/hash.c
+++ b/hash.c
@@ -2713,6 +2713,7 @@ env_reject_bang(VALUE ehash)
RETURN_SIZED_ENUMERATOR(ehash, 0, 0, rb_env_size);
keys = env_keys(); /* rb_secure(4); */
+ RBASIC(keys)->klass = 0;
for (i=0; i<RARRAY_LEN(keys); i++) {
VALUE val = rb_f_getenv(Qnil, RARRAY_PTR(keys)[i]);
if (!NIL_P(val)) {
@@ -2816,6 +2817,7 @@ env_select_bang(VALUE ehash)
RETURN_SIZED_ENUMERATOR(ehash, 0, 0, rb_env_size);
keys = env_keys(); /* rb_secure(4); */
+ RBASIC(keys)->klass = 0;
for (i=0; i<RARRAY_LEN(keys); i++) {
VALUE val = rb_f_getenv(Qnil, RARRAY_PTR(keys)[i]);
if (!NIL_P(val)) {