Remove the free assumption from libab_ref.
This commit is contained in:
parent
5d3130d39d
commit
d096e2155c
|
@ -79,6 +79,11 @@ void libab_ref_free(libab_ref* ref);
|
||||||
* Copies this reference, thereby increasing the reference count.
|
* Copies this reference, thereby increasing the reference count.
|
||||||
*/
|
*/
|
||||||
void libab_ref_copy(const libab_ref* ref, libab_ref* into);
|
void libab_ref_copy(const libab_ref* ref, libab_ref* into);
|
||||||
|
/**
|
||||||
|
* Function that can be passed in to refcount to simply use free
|
||||||
|
* when the refcount reaches 0.
|
||||||
|
*/
|
||||||
|
void libab_ref_data_free(void*);
|
||||||
/**
|
/**
|
||||||
* Gets the value of the reference.
|
* Gets the value of the reference.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -312,7 +312,10 @@ libab_result _parse_type_raw(struct parser_state* state,
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
void _parse_type_free(void* data) { libab_parsetype_free(data); }
|
void _parse_type_free(void* data) {
|
||||||
|
libab_parsetype_free(data);
|
||||||
|
free(data);
|
||||||
|
}
|
||||||
|
|
||||||
libab_result _parse_type(struct parser_state* state, libab_ref* into) {
|
libab_result _parse_type(struct parser_state* state, libab_ref* into) {
|
||||||
libab_parsetype* store_into;
|
libab_parsetype* store_into;
|
||||||
|
|
|
@ -31,7 +31,6 @@ void _libab_ref_changed(libab_ref* ref) {
|
||||||
if (ref->count->free_func) {
|
if (ref->count->free_func) {
|
||||||
ref->count->free_func(ref->data);
|
ref->count->free_func(ref->data);
|
||||||
}
|
}
|
||||||
free(ref->data);
|
|
||||||
}
|
}
|
||||||
if (ref->count->weak == 0) {
|
if (ref->count->weak == 0) {
|
||||||
free(ref->count);
|
free(ref->count);
|
||||||
|
@ -58,6 +57,8 @@ void libab_ref_copy(const libab_ref* ref, libab_ref* into) {
|
||||||
memcpy(into, ref, sizeof(*ref));
|
memcpy(into, ref, sizeof(*ref));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void libab_ref_data_free(void* data) { free(data); }
|
||||||
|
|
||||||
void* libab_ref_get(const libab_ref* ref) {
|
void* libab_ref_get(const libab_ref* ref) {
|
||||||
void* to_return = NULL;
|
void* to_return = NULL;
|
||||||
if (ref->count->strong > 0) {
|
if (ref->count->strong > 0) {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user