summaryrefslogtreecommitdiff
path: root/common/alloc.c
diff options
context:
space:
mode:
authorTed Lemon <source@isc.org>2000-02-15 19:39:21 +0000
committerTed Lemon <source@isc.org>2000-02-15 19:39:21 +0000
commit56a7da7d3cd1a481490156bde9c7661dd1a64ea8 (patch)
treeb6394e7b394e60a79481d72fcad2cb251ac1fcfa /common/alloc.c
parent144cdb49b2119def893ab9852ed39f8e4c7a84fe (diff)
downloadisc-dhcp-56a7da7d3cd1a481490156bde9c7661dd1a64ea8.tar.gz
Add allocator for function definitions.
Diffstat (limited to 'common/alloc.c')
-rw-r--r--common/alloc.c45
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)