summaryrefslogtreecommitdiff
path: root/source4/lib/talloc
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2006-12-15 22:45:36 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 14:29:21 -0500
commitbfbf6d546bcea8ea3051a4ff93ed69f1dbf45ffe (patch)
tree788ba7c0e0c1e96314915b59d5bc9c14a1aea079 /source4/lib/talloc
parentf0eaae956f37a0b25baf8fbfb8019b5b6c9e23a1 (diff)
downloadsamba-bfbf6d546bcea8ea3051a4ff93ed69f1dbf45ffe.tar.gz
samba-bfbf6d546bcea8ea3051a4ff93ed69f1dbf45ffe.tar.bz2
samba-bfbf6d546bcea8ea3051a4ff93ed69f1dbf45ffe.zip
r20193: - let talloc_parent_chunk() handle a NULL pointer
- use talloc_parent_chunk() in talloc_parent_name() - add prototype of talloc_parent_name() metze (This used to be commit 85fc18f047cd2132d0c455f739ee76ce5005d7ed)
Diffstat (limited to 'source4/lib/talloc')
-rw-r--r--source4/lib/talloc/talloc.c26
-rw-r--r--source4/lib/talloc/talloc.h1
2 files changed, 12 insertions, 15 deletions
diff --git a/source4/lib/talloc/talloc.c b/source4/lib/talloc/talloc.c
index bae1942f43..dafb6d9075 100644
--- a/source4/lib/talloc/talloc.c
+++ b/source4/lib/talloc/talloc.c
@@ -164,8 +164,15 @@ do { \
*/
static struct talloc_chunk *talloc_parent_chunk(const void *ptr)
{
- struct talloc_chunk *tc = talloc_chunk_from_ptr(ptr);
+ struct talloc_chunk *tc;
+
+ if (unlikely(ptr == NULL)) {
+ return NULL;
+ }
+
+ tc = talloc_chunk_from_ptr(ptr);
while (tc->prev) tc=tc->prev;
+
return tc->parent;
}
@@ -178,23 +185,12 @@ void *talloc_parent(const void *ptr)
/*
find parents name
*/
-const char *talloc_parent_name(const void *context)
+const char *talloc_parent_name(const void *ptr)
{
- struct talloc_chunk *tc;
-
- if (unlikely(context == NULL)) {
- return NULL;
- }
-
- tc = talloc_chunk_from_ptr(context);
- while (tc && tc->prev) tc = tc->prev;
- if (tc) {
- tc = tc->parent;
- }
- return tc->name;
+ struct talloc_chunk *tc = talloc_parent_chunk(ptr);
+ return tc? tc->name : NULL;
}
-
/*
Allocate a bit of memory as a child of an existing pointer
*/
diff --git a/source4/lib/talloc/talloc.h b/source4/lib/talloc/talloc.h
index 8b17eec03a..75c130a275 100644
--- a/source4/lib/talloc/talloc.h
+++ b/source4/lib/talloc/talloc.h
@@ -123,6 +123,7 @@ void *talloc_named_const(const void *context, size_t size, const char *name);
const char *talloc_get_name(const void *ptr);
void *talloc_check_name(const void *ptr, const char *name);
void *talloc_parent(const void *ptr);
+const char *talloc_parent_name(const void *ptr);
void *talloc_init(const char *fmt, ...) PRINTF_ATTRIBUTE(1,2);
int talloc_free(void *ptr);
void talloc_free_children(void *ptr);