diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2016-04-15 06:23:25 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2016-04-15 06:23:25 -0700 |
commit | 15be06e5c6e151b6c954c1ee4ee093c00c8cc4b9 (patch) | |
tree | b505ea083581d20657c82f7c401bd5eaf309020e /glob.c | |
parent | e1a681d66738eedbfdbd351e9ca4d2aaf1b3fb69 (diff) | |
download | txr-15be06e5c6e151b6c954c1ee4ee093c00c8cc4b9.tar.gz txr-15be06e5c6e151b6c954c1ee4ee093c00c8cc4b9.tar.bz2 txr-15be06e5c6e151b6c954c1ee4ee093c00c8cc4b9.zip |
Fix memory leak in glob.
* glob.c (glob_wrap): Must free the temporary UTF-8 version of
the search pattern.
Diffstat (limited to 'glob.c')
-rw-r--r-- | glob.c | 5 |
1 files changed, 4 insertions, 1 deletions
@@ -69,9 +69,11 @@ val glob_wrap(val pattern, val flags, val errfunc) char *pat_u8 = utf8_dup_to(c_str(pattern)); glob_t gl; - if (s_errfunc) + if (s_errfunc) { + free(pat_u8); uw_throwf(error_s, lit("glob: glob cannot be re-entered from " "its error callback function"), nao); + } s_errfunc = default_bool_arg(errfunc); @@ -79,6 +81,7 @@ val glob_wrap(val pattern, val flags, val errfunc) s_errfunc ? errfunc_thunk : 0, &gl); s_errfunc = nil; + free(pat_u8); if (s_exit_point) { uw_frame_t *ep = s_exit_point; |