summaryrefslogtreecommitdiff
path: root/source4/lib/talloc
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2006-09-13 02:33:51 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 14:18:29 -0500
commit05cdd9ccafeeb384792b9ce7ca044bcec1bfc839 (patch)
tree5e34e06ecfa90d4248e4d511af80f67636c759ac /source4/lib/talloc
parent24fe49a3d10633fa9be5547e89d10be1d5f9ccb1 (diff)
downloadsamba-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.xml2
-rw-r--r--source4/lib/talloc/talloc.h2
-rw-r--r--source4/lib/talloc/testsuite.c4
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) {