| 118 | } |
| 119 | |
| 120 | void av_refstruct_unref(void *objp) |
| 121 | { |
| 122 | void *obj; |
| 123 | RefCount *ref; |
| 124 | |
| 125 | memcpy(&obj, objp, sizeof(obj)); |
| 126 | if (!obj) |
| 127 | return; |
| 128 | memcpy(objp, &(void *){ NULL }, sizeof(obj)); |
| 129 | |
| 130 | ref = get_refcount(obj); |
| 131 | if (atomic_fetch_sub_explicit(&ref->refcount, 1, memory_order_acq_rel) == 1) { |
| 132 | if (ref->free_cb) |
| 133 | ref->free_cb(ref->opaque, obj); |
| 134 | ref->free(ref); |
| 135 | } |
| 136 | |
| 137 | return; |
| 138 | } |
| 139 | |
| 140 | void *av_refstruct_ref(void *obj) |
| 141 | { |
no test coverage detected