regfree.c revision 1.2
1#include <sys/types.h> 2#include <stdio.h> 3#include <stdlib.h> 4#include <regex.h> 5 6#include "utils.h" 7#include "regex2.h" 8 9/* 10 - regfree - free everything 11 = extern void regfree(regex_t *); 12 */ 13void 14regfree(preg) 15regex_t *preg; 16{ 17 register struct re_guts *g; 18 19 if (preg->re_magic != MAGIC1) /* oops */ 20 return; /* nice to complain, but hard */ 21 22 g = preg->re_g; 23 if (g == NULL || g->magic != MAGIC2) /* oops again */ 24 return; 25 preg->re_magic = 0; /* mark it invalid */ 26 g->magic = 0; /* mark it invalid */ 27 28 if (g->strip != NULL) 29 free((char *)g->strip); 30 if (g->sets != NULL) 31 free((char *)g->sets); 32 if (g->setbits != NULL) 33 free((char *)g->setbits); 34 if (g->must != NULL) 35 free(g->must); 36 free((char *)g); 37} 38