Goto sanos source index

//
// regfree.c
//
// Free regular expression
//
// Ported to sanos by Michael Ringgaard.
//
// Copyright 1992, 1993, 1994, 1997 Henry Spencer.  All rights reserved.
// This software is not subject to any license of the American Telephone
// and Telegraph Company or of the Regents of the University of California.
// 
// Permission is granted to anyone to use this software for any purpose on
// any computer system, and to alter it and redistribute it, subject
// to the following restrictions:
// 
// 1. The author is not responsible for the consequences of use of this
//    software, no matter how awful, even if they arise from flaws in it.
// 
// 2. The origin of this software must not be misrepresented, either by
//    explicit claim or by omission.  Since few users ever read sources,
//    credits must appear in the documentation.
// 
// 3. Altered versions must be plainly marked as such, and must not be
//    misrepresented as being the original software.  Since few users
//    ever read sources, credits must appear in the documentation.
// 
// 4. This notice may not be removed or altered.
// 

#include <sys/types.h>
#include <stdio.h>
#include <stdlib.h>
#include <regex.h>

#include "regex2.h"

//
// regfree - free everything
//
void regfree(regex_t *preg) {
  struct re_guts *g;

  if (preg->re_magic != MAGIC1) return; // oops
  g = preg->re_g;
  if (g == NULL || g->magic != MAGIC2) return; // oops again
    
  preg->re_magic = 0;   // mark it invalid
  g->magic = 0;     // mark it invalid

  if (g->strip != NULL) free(g->strip);
  if (g->sets != NULL) free(g->sets);
  if (g->setbits != NULL) free(g->setbits);
  if (g->must != NULL) free(g->must);
  free(g);
}