diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | dir.c | 7 |
2 files changed, 10 insertions, 2 deletions
@@ -1,3 +1,8 @@ +Fri Apr 9 20:05:05 2010 Yusuke Endoh <mame@tsg.ne.jp> + + * dir.c (push_glob): add RB_GC_GUARD to prevent str being free'ed. + a patch from Masaya TARUI in [ruby-dev:40939]. [ruby-dev:40514] + Fri Apr 9 10:53:00 2010 Kenta Murata <mrkn@mrkn.jp> * compile.c (iseq_compile_each): stop hiding, and freeze unpopped @@ -1622,14 +1622,17 @@ push_glob(VALUE ary, VALUE str, int flags) { struct glob_args args; rb_encoding *enc = rb_enc_get(str); + int ret; if (enc == rb_usascii_encoding()) enc = rb_filesystem_encoding(); args.func = push_pattern; args.value = ary; args.enc = enc; - return ruby_brace_glob0(RSTRING_PTR(str), flags | GLOB_VERBOSE, - rb_glob_caller, (VALUE)&args, enc); + ret = ruby_brace_glob0(RSTRING_PTR(str), flags | GLOB_VERBOSE, + rb_glob_caller, (VALUE)&args, enc); + RB_GC_GUARD(str); + return ret; } static VALUE |