diff options
author | Nicolas "Pixel" Noble <pixel@nobis-crew.org> | 2014-07-31 18:18:18 +0200 |
---|---|---|
committer | Nicolas "Pixel" Noble <pixel@nobis-crew.org> | 2014-07-31 18:18:18 +0200 |
commit | 680a012532e2d962a55c1a588900c3b52c0d6b69 (patch) | |
tree | 613b0399000e5c72290efa2497cf008fbccb12df /win32/regex/regfree.c | |
parent | 3c97ca53d8279f0f16ca2f82a703bafa517e39f3 (diff) | |
parent | ee0ffcb7bcb46d3d129bd262781d54afa736ffbb (diff) |
Merge branch 'master' of /pub/repo.git/Balau
Diffstat (limited to 'win32/regex/regfree.c')
-rw-r--r-- | win32/regex/regfree.c | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/win32/regex/regfree.c b/win32/regex/regfree.c new file mode 100644 index 0000000..9a6acf1 --- /dev/null +++ b/win32/regex/regfree.c @@ -0,0 +1,37 @@ +#include <sys/types.h> +#include <stdio.h> +#include <stdlib.h> +#include <regex.h> + +#include "utils.h" +#include "regex2.h" + +/* + - regfree - free everything + = extern void regfree(regex_t *); + */ +void +regfree(preg) +regex_t *preg; +{ + register struct re_guts *g; + + if (preg->re_magic != MAGIC1) /* oops */ + return; /* nice to complain, but hard */ + + g = preg->re_g; + if (g == NULL || g->magic != MAGIC2) /* oops again */ + return; + preg->re_magic = 0; /* mark it invalid */ + g->magic = 0; /* mark it invalid */ + + if (g->strip != NULL) + free((char *)g->strip); + if (g->sets != NULL) + free((char *)g->sets); + if (g->setbits != NULL) + free((char *)g->setbits); + if (g->must != NULL) + free(g->must); + free((char *)g); +} |