| 263 | } |
| 264 | |
| 265 | static void sh_unref_unsafe(struct struct_hist *sh, osips_free_f free_f) |
| 266 | { |
| 267 | sh->ref--; |
| 268 | if (sh->ref != 0) |
| 269 | return; |
| 270 | |
| 271 | if (sh->auto_logging) { |
| 272 | lock_get(&sh->wlock); |
| 273 | |
| 274 | LM_INFO("%s %p free, %d actions follow\n", sh->obj_name, sh->obj, sh->len); |
| 275 | LM_INFO("=====================================\n"); |
| 276 | _sh_flush(sh, 1); |
| 277 | |
| 278 | lock_release(&sh->wlock); |
| 279 | } |
| 280 | |
| 281 | if (!list_empty(&sh->list)) |
| 282 | list_del(&sh->list); |
| 283 | |
| 284 | sh_free(sh, free_f); |
| 285 | } |
| 286 | |
| 287 | int _sh_log(osips_realloc_f realloc_f, struct struct_hist *sh, |
| 288 | enum struct_hist_verb verb, char *fmt, ...) |
no test coverage detected