1e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao/*- 2e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao * This code is derived from OpenBSD's libc/regex, original license follows: 3e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao * 4e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao * Copyright (c) 1992, 1993, 1994 Henry Spencer. 5e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao * Copyright (c) 1992, 1993, 1994 6e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao * The Regents of the University of California. All rights reserved. 7e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao * 8e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao * This code is derived from software contributed to Berkeley by 9e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao * Henry Spencer. 10e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao * 11e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao * Redistribution and use in source and binary forms, with or without 12e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao * modification, are permitted provided that the following conditions 13e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao * are met: 14e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao * 1. Redistributions of source code must retain the above copyright 15e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao * notice, this list of conditions and the following disclaimer. 16e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao * 2. Redistributions in binary form must reproduce the above copyright 17e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao * notice, this list of conditions and the following disclaimer in the 18e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao * documentation and/or other materials provided with the distribution. 19e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao * 3. Neither the name of the University nor the names of its contributors 20e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao * may be used to endorse or promote products derived from this software 21e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao * without specific prior written permission. 22e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao * 23e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 24e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 25e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 26e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 27e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 28e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 29e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 30e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 31e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 32e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 33e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao * SUCH DAMAGE. 34e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao * 35e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao * @(#)regfree.c 8.3 (Berkeley) 3/20/94 36e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao */ 37e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao 38e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao#include <sys/types.h> 39e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao#include <stdio.h> 40e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao#include <stdlib.h> 41e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao#include "regex_impl.h" 42e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao 43e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao#include "regutils.h" 44e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao#include "regex2.h" 45e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao 46e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao/* 47e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao - llvm_regfree - free everything 48e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao */ 49e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liaovoid 50e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liaollvm_regfree(llvm_regex_t *preg) 51e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao{ 52e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao struct re_guts *g; 53e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao 54e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao if (preg->re_magic != MAGIC1) /* oops */ 55e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao return; /* nice to complain, but hard */ 56e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao 57e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao g = preg->re_g; 58e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao if (g == NULL || g->magic != MAGIC2) /* oops again */ 59e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao return; 60e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao preg->re_magic = 0; /* mark it invalid */ 61e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao g->magic = 0; /* mark it invalid */ 62e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao 63e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao if (g->strip != NULL) 64e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao free((char *)g->strip); 65e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao if (g->sets != NULL) 66e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao free((char *)g->sets); 67e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao if (g->setbits != NULL) 68e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao free((char *)g->setbits); 69e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao if (g->must != NULL) 70e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao free(g->must); 71e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao free((char *)g); 72e264f62ca09a8f65c87a46d562a4d0f9ec5d457Shih-wei Liao} 73