diff options
Diffstat (limited to 'lib/libc/regex/regfree.c')
-rw-r--r-- | lib/libc/regex/regfree.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/lib/libc/regex/regfree.c b/lib/libc/regex/regfree.c index 96f2997..b1e6a35 100644 --- a/lib/libc/regex/regfree.c +++ b/lib/libc/regex/regfree.c @@ -48,6 +48,8 @@ __FBSDID("$FreeBSD$"); #include <stdlib.h> #include <limits.h> #include <regex.h> +#include <wchar.h> +#include <wctype.h> #include "utils.h" #include "regex2.h" @@ -61,6 +63,7 @@ regfree(preg) regex_t *preg; { struct re_guts *g; + int i; if (preg->re_magic != MAGIC1) /* oops */ return; /* nice to complain, but hard */ @@ -73,10 +76,14 @@ regex_t *preg; if (g->strip != NULL) free((char *)g->strip); - if (g->sets != NULL) + if (g->sets != NULL) { + for (i = 0; i < g->ncsets; i++) { + free(g->sets[i].ranges); + free(g->sets[i].wides); + free(g->sets[i].types); + } free((char *)g->sets); - if (g->setbits != NULL) - free((char *)g->setbits); + } if (g->must != NULL) free(g->must); if (g->charjump != NULL) |