From 05cdd9ccafeeb384792b9ce7ca044bcec1bfc839 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Wed, 13 Sep 2006 02:33:51 +0000 Subject: r18439: 2nd try at a talloc_move() api. This type with the ** ptr interface exposed. Unfortunately this generates a large number of type punning warnings. We'll have to find some magic to hide those. (This used to be commit 254cbf09dee5a1e20c47e47a298f1a8d172b41b9) --- source4/lib/talloc/talloc.3.xml | 2 +- source4/lib/talloc/talloc.h | 2 +- source4/lib/talloc/testsuite.c | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) (limited to 'source4/lib/talloc') diff --git a/source4/lib/talloc/talloc.3.xml b/source4/lib/talloc/talloc.3.xml index 76b54ddb80..2400fef2dc 100644 --- a/source4/lib/talloc/talloc.3.xml +++ b/source4/lib/talloc/talloc.3.xml @@ -387,7 +387,7 @@ talloc_realloc(ctx, ptr, type, 0) ==> talloc_free(ptr); data if you do this. - TYPE *talloc_move(const void *<emphasis role="italic">new_ctx</emphasis>, TYPE *<emphasis role="italic">ptr</emphasis>); + TYPE *talloc_move(const void *<emphasis role="italic">new_ctx</emphasis>, TYPE **<emphasis role="italic">ptr</emphasis>); The talloc_move() function is a wrapper around talloc_steal() which zeros the source pointer after the diff --git a/source4/lib/talloc/talloc.h b/source4/lib/talloc/talloc.h index b9ecd8f0b8..56f9dbb21a 100644 --- a/source4/lib/talloc/talloc.h +++ b/source4/lib/talloc/talloc.h @@ -73,7 +73,7 @@ typedef void TALLOC_CTX; #endif #define talloc_reference(ctx, ptr) (_TALLOC_TYPEOF(ptr))_talloc_reference((ctx),(ptr)) -#define talloc_move(ctx, ptr) (_TALLOC_TYPEOF(ptr))_talloc_move((ctx),&(ptr)) +#define talloc_move(ctx, ptr) (_TALLOC_TYPEOF(*(ptr)))_talloc_move((ctx),(const void **)(ptr)) /* useful macros for creating type checked pointers */ #define talloc(ctx, type) (type *)talloc_named_const(ctx, sizeof(type), #type) diff --git a/source4/lib/talloc/testsuite.c b/source4/lib/talloc/testsuite.c index 38039c11bf..00ea212e58 100644 --- a/source4/lib/talloc/testsuite.c +++ b/source4/lib/talloc/testsuite.c @@ -750,8 +750,8 @@ static bool test_move(void) t1->x = talloc(t1, int); *t1->x = 42; - t2->p = talloc_move(t2, t1->p); - t2->x = talloc_move(t2, t1->x); + t2->p = talloc_move(t2, &t1->p); + t2->x = talloc_move(t2, &t1->x); if (t1->p != NULL || t1->x != NULL || strcmp(t2->p, "foo") || *t2->x != 42) { -- cgit