diff options
author | Ted Lemon <source@isc.org> | 2000-02-15 19:39:21 +0000 |
---|---|---|
committer | Ted Lemon <source@isc.org> | 2000-02-15 19:39:21 +0000 |
commit | 56a7da7d3cd1a481490156bde9c7661dd1a64ea8 (patch) | |
tree | b6394e7b394e60a79481d72fcad2cb251ac1fcfa /common/alloc.c | |
parent | 144cdb49b2119def893ab9852ed39f8e4c7a84fe (diff) | |
download | isc-dhcp-56a7da7d3cd1a481490156bde9c7661dd1a64ea8.tar.gz |
Add allocator for function definitions.
Diffstat (limited to 'common/alloc.c')
-rw-r--r-- | common/alloc.c | 45 |
1 files changed, 44 insertions, 1 deletions
diff --git a/common/alloc.c b/common/alloc.c index 435640ad..2de70300 100644 --- a/common/alloc.c +++ b/common/alloc.c @@ -22,7 +22,7 @@ #ifndef lint static char copyright[] = -"$Id: alloc.c,v 1.43 2000/02/07 05:13:57 mellon Exp $ Copyright (c) 1995, 1996, 1998 The Internet Software Consortium. All rights reserved.\n"; +"$Id: alloc.c,v 1.44 2000/02/15 19:39:21 mellon Exp $ Copyright (c) 1995, 1996, 1998 The Internet Software Consortium. All rights reserved.\n"; #endif /* not lint */ #include "dhcpd.h" @@ -548,6 +548,49 @@ void free_binding_value (bv, file, line) dmalloc_reuse (free_binding_values, (char *)0, 0, 0); } +int fundef_allocate (cptr, file, line) + struct fundef **cptr; + const char *file; + int line; +{ + struct fundef *rval; + + rval = dmalloc (sizeof (struct fundef), file, line); + if (!rval) + return 0; + memset (rval, 0, sizeof *rval); + return fundef_reference (cptr, rval, file, line); +} + +int fundef_reference (ptr, src, file, line) + struct fundef **ptr; + struct fundef *src; + const char *file; + int line; +{ + if (!ptr) { + log_error ("%s(%d): null pointer", file, line); +#if defined (POINTER_DEBUG) + abort (); +#else + return 0; +#endif + } + if (*ptr) { + log_error ("%s(%d): non-null pointer", file, line); +#if defined (POINTER_DEBUG) + abort (); +#else + *ptr = (struct fundef *)0; +#endif + } + *ptr = src; + src -> refcnt++; + rc_register (file, line, ptr, src, src -> refcnt); + dmalloc_reuse (src, file, line, 1); + return 1; +} + struct option_cache *free_option_caches; int option_cache_allocate (cptr, file, line) |