]> git.ipfire.org Git - thirdparty/dhcp.git/commitdiff
Add allocator for function definitions.
authorTed Lemon <source@isc.org>
Tue, 15 Feb 2000 19:39:21 +0000 (19:39 +0000)
committerTed Lemon <source@isc.org>
Tue, 15 Feb 2000 19:39:21 +0000 (19:39 +0000)
common/alloc.c

index 435640ada673c68e109e17372808d5816fab0f7a..2de7030014244446e82c217b1001460b7d1bc783 100644 (file)
@@ -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)