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