summaryrefslogtreecommitdiff
path: root/dir.c
diff options
context:
space:
mode:
Diffstat (limited to 'dir.c')
-rw-r--r--dir.c7
1 files changed, 5 insertions, 2 deletions
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