summaryrefslogtreecommitdiffstats
path: root/lib/libc/regex/regfree.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libc/regex/regfree.c')
-rw-r--r--lib/libc/regex/regfree.c13
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)
OpenPOWER on IntegriCloud