| 100 | } |
| 101 | |
| 102 | void *av_refstruct_alloc_ext_c(size_t size, unsigned flags, AVRefStructOpaque opaque, |
| 103 | void (*free_cb)(AVRefStructOpaque opaque, void *obj)) |
| 104 | { |
| 105 | void *buf, *obj; |
| 106 | |
| 107 | if (size > SIZE_MAX - REFCOUNT_OFFSET) |
| 108 | return NULL; |
| 109 | buf = av_malloc(size + REFCOUNT_OFFSET); |
| 110 | if (!buf) |
| 111 | return NULL; |
| 112 | refcount_init(buf, opaque, free_cb); |
| 113 | obj = get_userdata(buf); |
| 114 | if (!(flags & AV_REFSTRUCT_FLAG_NO_ZEROING)) |
| 115 | memset(obj, 0, size); |
| 116 | |
| 117 | return obj; |
| 118 | } |
| 119 | |
| 120 | void av_refstruct_unref(void *objp) |
| 121 | { |
no test coverage detected