diff --git a/res/res_musiconhold.c b/res/res_musiconhold.c index 3a22ec19d41a6d48dac3e3d2be7e5589a3ff2122..7daf4db15e02a1720a07da1b4551dee4ff2e6585 100644 --- a/res/res_musiconhold.c +++ b/res/res_musiconhold.c @@ -234,8 +234,9 @@ static int reload(void); #define mohclass_unref(class,string) _mohclass_unref(class, string, __FILE__,__LINE__,__PRETTY_FUNCTION__) static struct mohclass *_mohclass_unref(struct mohclass *class, const char *tag, const char *file, int line, const char *funcname) { - struct mohclass *dup; - if ((dup = ao2_find(mohclasses, class, OBJ_POINTER))) { + struct mohclass *dup = ao2_callback(mohclasses, OBJ_POINTER, ao2_match_by_addr, class); + + if (dup) { if (__ao2_ref_debug(dup, -1, (char *) tag, (char *) file, line, funcname) == 2) { FILE *ref = fopen("/tmp/refs", "a"); if (ref) { @@ -248,7 +249,7 @@ static struct mohclass *_mohclass_unref(struct mohclass *class, const char *tag, ao2_ref(class, -1); } } else { - ao2_t_ref(class, -1, (char *) tag); + __ao2_ref_debug(class, -1, (char *) tag, (char *) file, line, funcname); } return NULL; }