summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2020-04-26 23:38:54 +0200
committerwm4 <wm4@nowhere>2020-04-26 23:38:54 +0200
commit027ae815ec3a726a5138c04fb6e4296c5f6aee39 (patch)
tree355fb48ede5d58da62412936e72cb607a4e64bdf
parent729843b85e876a4c49662a97b01d6ac2106a9ea9 (diff)
downloadmpv-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.c12
-rw-r--r--ta/ta.h1
2 files changed, 12 insertions, 1 deletions
diff --git a/ta/ta.c b/ta/ta.c
index a0eabbd3e9..b695317301 100644
--- a/ta/ta.c
+++ b/ta/ta.c
@@ -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).
diff --git a/ta/ta.h b/ta/ta.h
index 2af4747533..4baac8fb40 100644
--- a/ta/ta.h
+++ b/ta/ta.h
@@ -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);