diff options
author | Andrew Tridgell <tridge@samba.org> | 2006-09-13 02:33:51 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 14:18:29 -0500 |
commit | 05cdd9ccafeeb384792b9ce7ca044bcec1bfc839 (patch) | |
tree | 5e34e06ecfa90d4248e4d511af80f67636c759ac /source4/lib/talloc | |
parent | 24fe49a3d10633fa9be5547e89d10be1d5f9ccb1 (diff) | |
download | samba-05cdd9ccafeeb384792b9ce7ca044bcec1bfc839.tar.gz samba-05cdd9ccafeeb384792b9ce7ca044bcec1bfc839.tar.bz2 samba-05cdd9ccafeeb384792b9ce7ca044bcec1bfc839.zip |
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)
Diffstat (limited to 'source4/lib/talloc')
-rw-r--r-- | source4/lib/talloc/talloc.3.xml | 2 | ||||
-rw-r--r-- | source4/lib/talloc/talloc.h | 2 | ||||
-rw-r--r-- | source4/lib/talloc/testsuite.c | 4 |
3 files changed, 4 insertions, 4 deletions
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);</programlisting> data if you do this. </para> </refsect2> - <refsect2><title>TYPE *talloc_move(const void *<emphasis role="italic">new_ctx</emphasis>, TYPE *<emphasis role="italic">ptr</emphasis>);</title> + <refsect2><title>TYPE *talloc_move(const void *<emphasis role="italic">new_ctx</emphasis>, TYPE **<emphasis role="italic">ptr</emphasis>);</title> <para> 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) { |