From 5dd8daaa27e409ef1c63e70a59dcafb4a8f9775b Mon Sep 17 00:00:00 2001 From: mame Date: Fri, 9 Apr 2010 11:08:06 +0000 Subject: * 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] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@27268 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- dir.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'dir.c') diff --git a/dir.c b/dir.c index a2e8e037c5..6cdccd8b85 100644 --- a/dir.c +++ b/dir.c @@ -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 -- cgit v1.2.3