diff options
author | wm4 <wm4@nowhere> | 2020-04-26 23:38:54 +0200 |
---|---|---|
committer | wm4 <wm4@nowhere> | 2020-04-26 23:38:54 +0200 |
commit | 027ae815ec3a726a5138c04fb6e4296c5f6aee39 (patch) | |
tree | 355fb48ede5d58da62412936e72cb607a4e64bdf | |
parent | 729843b85e876a4c49662a97b01d6ac2106a9ea9 (diff) | |
download | mpv-027ae815ec3a726a5138c04fb6e4296c5f6aee39.tar.bz2 mpv-027ae815ec3a726a5138c04fb6e4296c5f6aee39.tar.xz |
ta: add ta_get_parent()
Sometimes useful for debugging. Also fix a random typo elsewhere.
-rw-r--r-- | ta/ta.c | 12 | ||||
-rw-r--r-- | ta/ta.h | 1 |
2 files changed, 12 insertions, 1 deletions
@@ -97,7 +97,7 @@ void ta_set_parent(void *ptr, void *ta_parent) ch->prev->next = ch->next; if (ch->next) ch->next->prev = ch->prev; - // If ch was the firs child, change child link of old parent + // If ch was the first child, change child link of old parent if (ch->parent) { assert(ch->parent->child == ch); ch->parent->child = ch->next; @@ -119,6 +119,16 @@ void ta_set_parent(void *ptr, void *ta_parent) } } +/* Return the parent allocation, or NULL if none or if ptr==NULL. + * + * Warning: do not use this for program logic, or I'll be sad. + */ +void *ta_get_parent(void *ptr) +{ + struct ta_header *ch = get_header(ptr); + return ch ? ch->parent : NULL; +} + /* Allocate size bytes of memory. If ta_parent is not NULL, this is used as * parent allocation (if ta_parent is freed, this allocation is automatically * freed as well). size==0 allocates a block of size 0 (i.e. returns non-NULL). @@ -52,6 +52,7 @@ void ta_free(void *ptr); void ta_free_children(void *ptr); void ta_set_destructor(void *ptr, void (*destructor)(void *)); void ta_set_parent(void *ptr, void *ta_parent); +void *ta_get_parent(void *ptr); // Utility functions size_t ta_calc_array_size(size_t element_size, size_t count); |