Annotation of src/lib/libc/regex/regfree.c, Revision 1.15
1.15 ! junyoung 1: /* $NetBSD: regfree.c,v 1.14 2007/02/08 05:44:18 junyoung Exp $ */
1.4 cgd 2:
1.3 cgd 3: /*-
4: * Copyright (c) 1992, 1993, 1994
5: * The Regents of the University of California. All rights reserved.
6: *
7: * This code is derived from software contributed to Berkeley by
8: * Henry Spencer.
9: *
10: * Redistribution and use in source and binary forms, with or without
11: * modification, are permitted provided that the following conditions
12: * are met:
13: * 1. Redistributions of source code must retain the above copyright
14: * notice, this list of conditions and the following disclaimer.
15: * 2. Redistributions in binary form must reproduce the above copyright
16: * notice, this list of conditions and the following disclaimer in the
17: * documentation and/or other materials provided with the distribution.
1.13 agc 18: * 3. Neither the name of the University nor the names of its contributors
19: * may be used to endorse or promote products derived from this software
20: * without specific prior written permission.
21: *
22: * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
23: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25: * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
26: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
28: * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
29: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30: * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
31: * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32: * SUCH DAMAGE.
33: *
34: * @(#)regfree.c 8.3 (Berkeley) 3/20/94
35: */
36:
37: /*-
38: * Copyright (c) 1992, 1993, 1994 Henry Spencer.
39: *
40: * This code is derived from software contributed to Berkeley by
41: * Henry Spencer.
42: *
43: * Redistribution and use in source and binary forms, with or without
44: * modification, are permitted provided that the following conditions
45: * are met:
46: * 1. Redistributions of source code must retain the above copyright
47: * notice, this list of conditions and the following disclaimer.
48: * 2. Redistributions in binary form must reproduce the above copyright
49: * notice, this list of conditions and the following disclaimer in the
50: * documentation and/or other materials provided with the distribution.
1.3 cgd 51: * 3. All advertising materials mentioning features or use of this software
52: * must display the following acknowledgement:
53: * This product includes software developed by the University of
54: * California, Berkeley and its contributors.
55: * 4. Neither the name of the University nor the names of its contributors
56: * may be used to endorse or promote products derived from this software
57: * without specific prior written permission.
58: *
59: * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
60: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
61: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
62: * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
63: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
64: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
65: * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
66: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
67: * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
68: * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
69: * SUCH DAMAGE.
70: *
71: * @(#)regfree.c 8.3 (Berkeley) 3/20/94
72: */
73:
1.5 christos 74: #include <sys/cdefs.h>
1.3 cgd 75: #if defined(LIBC_SCCS) && !defined(lint)
1.4 cgd 76: #if 0
1.3 cgd 77: static char sccsid[] = "@(#)regfree.c 8.3 (Berkeley) 3/20/94";
1.4 cgd 78: #else
1.15 ! junyoung 79: __RCSID("$NetBSD: regfree.c,v 1.14 2007/02/08 05:44:18 junyoung Exp $");
1.4 cgd 80: #endif
1.3 cgd 81: #endif /* LIBC_SCCS and not lint */
82:
1.6 jtc 83: #include "namespace.h"
1.1 jtc 84: #include <sys/types.h>
1.10 lukem 85:
86: #include <assert.h>
1.1 jtc 87: #include <stdio.h>
88: #include <stdlib.h>
1.15 ! junyoung 89: #include <regex.h>
1.6 jtc 90:
91: #ifdef __weak_alias
1.12 mycroft 92: __weak_alias(regfree,_regfree)
1.6 jtc 93: #endif
1.1 jtc 94:
95: #include "utils.h"
96: #include "regex2.h"
97:
98: /*
99: - regfree - free everything
1.2 jtc 100: = extern void regfree(regex_t *);
1.1 jtc 101: */
102: void
1.14 junyoung 103: regfree(
104: regex_t *preg)
1.1 jtc 105: {
1.7 perry 106: struct re_guts *g;
1.1 jtc 107:
1.10 lukem 108: _DIAGASSERT(preg != NULL);
109:
110: _DIAGASSERT(preg->re_magic == MAGIC1);
1.1 jtc 111: if (preg->re_magic != MAGIC1) /* oops */
112: return; /* nice to complain, but hard */
113:
114: g = preg->re_g;
115: if (g == NULL || g->magic != MAGIC2) /* oops again */
116: return;
117: preg->re_magic = 0; /* mark it invalid */
118: g->magic = 0; /* mark it invalid */
119:
120: if (g->strip != NULL)
1.8 christos 121: free(g->strip);
1.1 jtc 122: if (g->sets != NULL)
1.8 christos 123: free(g->sets);
1.1 jtc 124: if (g->setbits != NULL)
1.9 drochner 125: free(g->setbits);
1.1 jtc 126: if (g->must != NULL)
127: free(g->must);
1.8 christos 128: free(g);
1.1 jtc 129: }
CVSweb <webmaster@jp.NetBSD.org>