1 #include <sys/types.h> 2 #include <stdio.h> 3 #include <stdlib.h> 4 5 #include "regex.h" 6 #include "utils.h" 7 #include "regex2.h" 8 9 /* 10 - regfree - free everything 11 = API_EXPORT(void) regfree(regex_t *); 12 */ 13 API_EXPORT(void) 14 regfree(preg) 15 regex_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