From 50b5651649f71c7f1e4c480504b61cea04d8f789 Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Fri, 15 Apr 2016 06:55:43 -0700 Subject: glob bugfix: always clear callback global. * glob.c (glob_wrap): Move c_num call outside of the section of code where s_errfunc is assigned. We don't want to do anything here which throws, because then control escapes without evaluating "s_errfunc = nil", possibly leaving s_errfunc with a non-nil value that blocks further uses of glob. --- glob.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/glob.c b/glob.c index 5806f1fd..09151375 100644 --- a/glob.c +++ b/glob.c @@ -68,6 +68,7 @@ val glob_wrap(val pattern, val flags, val errfunc) { char *pat_u8 = utf8_dup_to(c_str(pattern)); glob_t gl; + cnum c_flags = c_num(default_arg(flags, zero)); if (s_errfunc) { free(pat_u8); @@ -77,8 +78,7 @@ val glob_wrap(val pattern, val flags, val errfunc) s_errfunc = default_bool_arg(errfunc); - (void) glob(pat_u8, c_num(default_arg(flags, zero)), - s_errfunc ? errfunc_thunk : 0, &gl); + (void) glob(pat_u8, c_flags, s_errfunc ? errfunc_thunk : 0, &gl); s_errfunc = nil; free(pat_u8); -- cgit v1.2.3