]> git.ipfire.org Git - thirdparty/dhcp.git/commitdiff
When debugging malloc on an object, be sure it has no special free routine.
authorTed Lemon <source@isc.org>
Sat, 24 Jun 2000 06:27:04 +0000 (06:27 +0000)
committerTed Lemon <source@isc.org>
Sat, 24 Jun 2000 06:27:04 +0000 (06:27 +0000)
omapip/alloc.c

index 88b1149110439194a025a9729b978e50a263bea7..11b8ecd3eeaca3071af4c5a0a966482e7863fbf5 100644 (file)
@@ -368,8 +368,10 @@ isc_result_t omapi_object_reference (omapi_object_t **r,
        }
        *r = h;
        h -> refcnt++;
-       rc_register (file, line, r, h, h -> refcnt);
-       dmalloc_reuse (h, file, line, 1);
+       if (!h -> type -> freer) {
+               rc_register (file, line, r, h, h -> refcnt);
+               dmalloc_reuse (h, file, line, 1);
+       }
        return ISC_R_SUCCESS;
 }
 
@@ -467,14 +469,16 @@ isc_result_t omapi_object_dereference (omapi_object_t **h,
                        if (outer_reference)
                                omapi_object_dereference
                                        (&(*h) -> outer -> inner, file, line);
-                       rc_register (file, line, h, *h, 0);
+                       if (!(*h) -> type -> freer)
+                               rc_register (file, line, h, *h, 0);
                        if ((*h) -> type -> destroy)
                                (*((*h) -> type -> destroy)) (*h, file, line);
                        dfree (*h, file, line);
                }
        } else {
                (*h) -> refcnt--;
-               rc_register (file, line, h, *h, (*h) -> refcnt);
+               if (!(*h) -> type -> freer)
+                       rc_register (file, line, h, *h, (*h) -> refcnt);
        }
        *h = 0;
        return ISC_R_SUCCESS;