int refcnt;
};
-#define rc_register(x, l, y, z) do { \
+#define rc_register(x, l, r, y, z) do { \
rc_history [rc_history_index].file = (x); \
rc_history [rc_history_index].line = (l); \
+ rc_history [rc_history_index].reference = (r); \
rc_history [rc_history_index].addr = (y); \
rc_history [rc_history_index].refcnt = (z); \
if (++rc_history_index == RC_HISTORY_MAX) \
rc_history_index = 0;\
} while (0)
-#define rc_register_mdl(y, z) \
- rc_register (__FILE__, __LINE__, y, z)
+#define rc_register_mdl(r, y, z) \
+ rc_register (__FILE__, __LINE__, r, y, z)
#else
-#define rc_register(file, line, addr, refcnt)
-#define rc_register_mdl(addr, refcnt)
+#define rc_register(file, line, reference, addr, refcnt)
+#define rc_register_mdl(reference, addr, refcnt)
#endif
#if defined (DEBUG_MEMORY_LEAKAGE) || defined (DEBUG_MALLOC_POOL)
i = rc_history_index;
do {
- log_info (" referenced by %s(%d): addr = %lx refcnt = %x\n",
+ log_info (" referenced by %s(%d)[%lx]: addr = %lx refcnt = %x",
rc_history [i].file, rc_history [i].line,
+ (unsigned long)rc_history [i].reference,
(unsigned long)rc_history [i].addr,
rc_history [i].refcnt);
++i;
}
*r = h;
h -> refcnt++;
- rc_register (file, line, h, h -> refcnt);
+ rc_register (file, line, r, h, h -> refcnt);
dmalloc_reuse (h, file, line, 1);
return ISC_R_SUCCESS;
}
if (outer_reference)
omapi_object_dereference
(&(*h) -> outer -> inner, file, line);
- rc_register (file, line, *h, 0);
+ 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) -> refcnt);
+ rc_register (file, line, h, *h, (*h) -> refcnt);
}
*h = 0;
return ISC_R_SUCCESS;
}
*r = h;
h -> refcnt++;
- rc_register (file, line, h, h -> refcnt);
+ rc_register (file, line, r, h, h -> refcnt);
dmalloc_reuse (h, file, line, 1);
return ISC_R_SUCCESS;
}
#endif
}
--(*h) -> refcnt;
- rc_register (file, line, h, (*h) -> refcnt);
+ rc_register (file, line, h, *h, (*h) -> refcnt);
if ((*h) -> refcnt == 0)
dfree (*h, file, line);
*h = 0;
}
*r = h;
h -> refcnt++;
- rc_register (file, line, h, h -> refcnt);
+ rc_register (file, line, r, h, h -> refcnt);
dmalloc_reuse (h, file, line, 1);
return ISC_R_SUCCESS;
}
}
--((*h) -> refcnt);
- rc_register (file, line, *h, (*h) -> refcnt);
+ rc_register (file, line, h, *h, (*h) -> refcnt);
if ((*h) -> refcnt <= 0 ) {
switch ((*h) -> type) {
case omapi_datatype_int:
}
*r = h;
h -> refcnt++;
- rc_register (file, line, h, h -> refcnt);
+ rc_register (file, line, r, h, h -> refcnt);
dmalloc_reuse (h, file, line, 1);
return ISC_R_SUCCESS;
}
}
--((*h) -> refcnt);
- rc_register (file, line, h, (*h) -> refcnt);
+ rc_register (file, line, h, *h, (*h) -> refcnt);
if ((*h) -> refcnt <= 0 ) {
dfree (*h, file, line);
}
}
*r = h;
h -> refcnt++;
- rc_register (file, line, h, h -> refcnt);
+ rc_register (file, line, r, h, h -> refcnt);
dmalloc_reuse (h, file, line, 1);
return ISC_R_SUCCESS;
}
}
--((*h) -> refcnt);
- rc_register (file, line, h, (*h) -> refcnt);
+ rc_register (file, line, h, *h, (*h) -> refcnt);
if ((*h) -> refcnt <= 0 ) {
if ((*h) -> name)
omapi_data_string_dereference (&(*h) -> name,