summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2001-07-02 22:17:58 +0000
committerJeremy Allison <jra@samba.org>2001-07-02 22:17:58 +0000
commit1ab31e5db53bc839d2785cce4d3c739c8004bbf6 (patch)
treea5d2585a8452d871f437c08e6b997f0332fa45ca
parent1685e41da04f1fbbab036e194ce1b1e7ba9fef86 (diff)
downloadsamba-1ab31e5db53bc839d2785cce4d3c739c8004bbf6.tar.gz
samba-1ab31e5db53bc839d2785cce4d3c739c8004bbf6.tar.xz
samba-1ab31e5db53bc839d2785cce4d3c739c8004bbf6.zip
Made talloc_realloc() semantics match realloc(). JF was complaining :-).
realloc(NULL) == malloc. realloc(p,0) == free() - a no-op in talloc. Jeremy.
-rw-r--r--source/lib/talloc.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/source/lib/talloc.c b/source/lib/talloc.c
index e83369f379e..a8ee481744b 100644
--- a/source/lib/talloc.c
+++ b/source/lib/talloc.c
@@ -80,6 +80,14 @@ void *talloc_realloc(TALLOC_CTX *t, void *ptr, size_t size)
{
struct talloc_chunk *tc;
+ /* size zero is equivalent to free() */
+ if (size == 0)
+ return NULL;
+
+ /* realloc(NULL) is equavalent to malloc() */
+ if (ptr == NULL)
+ return talloc(t, size);
+
for (tc=t->list; tc; tc=tc->next) {
if (tc->ptr == ptr) {
ptr = realloc(ptr, size);