diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2004-01-07 13:28:15 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2004-01-07 13:28:15 +0000 |
commit | debe0485f0eae6a2fcedf6326c994a6e8cc60fb8 (patch) | |
tree | 4810a20eb8be026083130bed43b39461c1448bad /dir.c | |
parent | d5ffbb20e80202319957c74e75fbdd628cbda43b (diff) |
* dir.c (glob_helper): fix memory leak.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5405 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'dir.c')
-rw-r--r-- | dir.c | 16 |
1 files changed, 9 insertions, 7 deletions
@@ -162,7 +162,7 @@ range(pat, test, flags) return ok == not ? 0 : ++pat; else if (escape && *pstart == '\\') pstart = pend = ++pat; - Inc(pat); + Inc(pat); if (*pat == '-' && pat[1] != ']') { if (escape && pat[1] == '\\') pat++; @@ -197,13 +197,14 @@ fnmatch(pat, string, flags) while (c = *pat) { switch (c) { - case '?': + case '?': if (!*s || ISDIRSEP(*s) || PERIOD_S()) return FNM_NOMATCH; INC_S(); ++pat; break; - case '*': + + case '*': while ((c = *++pat) == '*') ; @@ -236,7 +237,7 @@ fnmatch(pat, string, flags) } return FNM_NOMATCH; - case '[': + case '[': if (!*s || ISDIRSEP(*s) || PERIOD_S()) return FNM_NOMATCH; pat = range(pat+1, s, flags); @@ -245,7 +246,7 @@ fnmatch(pat, string, flags) INC_S(); break; - case '\\': + case '\\': if (escape && pat[1] #if defined DOSISH && strchr("*?[\\", pat[1]) @@ -255,13 +256,13 @@ fnmatch(pat, string, flags) } /* FALLTHROUGH */ - default: + default: #if defined DOSISH if (ISDIRSEP(c) && isdirsep(*s)) ; else #endif - if(Compare(pat, s) != 0) + if (Compare(pat, s) != 0) return FNM_NOMATCH; INC_S(); Inc(pat); @@ -1129,6 +1130,7 @@ glob_helper(path, sub, separator, flags, func, arg) /* if separator p[-1] is rem strcpy(buf+n1, link->name); strcpy(buf+n2, m); status = glob_helper(buf, buf+n2+1, 1, flags, func, arg); + free(buf); } tmp = link; link = link->next; |