Lines Matching refs:wrapper
30 struct wrapper {
36 refcount_destructor(struct wrapper *wrapper)
38 (*wrapper->refcount)--;
39 if (*wrapper->refcount == 0) {
40 talloc_free(wrapper->ptr);
50 struct wrapper *wrapper;
53 wrapper = talloc(context, struct wrapper);
54 if (wrapper == NULL) {
58 wrapper->ptr = talloc_named_const(NULL, size, type_name);
59 if (wrapper->ptr == NULL) {
60 talloc_free(wrapper);
64 refcount_pos = (char *)wrapper->ptr + refcount_offset;
65 wrapper->refcount = DISCARD_ALIGN(refcount_pos, int *);
66 *wrapper->refcount = 1;
68 talloc_set_destructor(wrapper, refcount_destructor);
70 return wrapper->ptr;
76 struct wrapper *wrapper;
79 wrapper = talloc(context, struct wrapper);
80 if (wrapper == NULL) {
84 wrapper->ptr = source;
85 refcount_pos = (char *)wrapper->ptr + refcount_offset;
86 wrapper->refcount = DISCARD_ALIGN(refcount_pos, int *);
87 (*wrapper->refcount)++;
89 talloc_set_destructor(wrapper, refcount_destructor);
91 return wrapper->ptr;