svn commit: samba r16446 - in branches/SAMBA_4_0/source/lib/talloc: .

metze at samba.org metze at samba.org
Wed Jun 21 19:28:25 GMT 2006


Author: metze
Date: 2006-06-21 19:28:24 +0000 (Wed, 21 Jun 2006)
New Revision: 16446

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=16446

Log:
talloc_set_name() allocates and can fail...
pass the error to the callers

metze
Modified:
   branches/SAMBA_4_0/source/lib/talloc/talloc.c
   branches/SAMBA_4_0/source/lib/talloc/talloc.h


Changeset:
Modified: branches/SAMBA_4_0/source/lib/talloc/talloc.c
===================================================================
--- branches/SAMBA_4_0/source/lib/talloc/talloc.c	2006-06-21 19:26:48 UTC (rev 16445)
+++ branches/SAMBA_4_0/source/lib/talloc/talloc.c	2006-06-21 19:28:24 UTC (rev 16446)
@@ -364,26 +364,29 @@
 /*
   add a name to an existing pointer - va_list version
 */
-static void talloc_set_name_v(const void *ptr, const char *fmt, va_list ap) PRINTF_ATTRIBUTE(2,0);
+static const char *talloc_set_name_v(const void *ptr, const char *fmt, va_list ap) PRINTF_ATTRIBUTE(2,0);
 
-static void talloc_set_name_v(const void *ptr, const char *fmt, va_list ap)
+static const char *talloc_set_name_v(const void *ptr, const char *fmt, va_list ap)
 {
 	struct talloc_chunk *tc = talloc_chunk_from_ptr(ptr);
 	tc->name = talloc_vasprintf(ptr, fmt, ap);
 	if (tc->name) {
 		talloc_set_name_const(tc->name, ".name");
 	}
+	return tc->name;
 }
 
 /*
   add a name to an existing pointer
 */
-void talloc_set_name(const void *ptr, const char *fmt, ...)
+const char *talloc_set_name(const void *ptr, const char *fmt, ...)
 {
+	const char *name;
 	va_list ap;
 	va_start(ap, fmt);
-	talloc_set_name_v(ptr, fmt, ap);
+	name = talloc_set_name_v(ptr, fmt, ap);
 	va_end(ap);
+	return name;
 }
 
 /*
@@ -405,14 +408,20 @@
 {
 	va_list ap;
 	void *ptr;
+	const char *name;
 
 	ptr = _talloc(context, size);
 	if (ptr == NULL) return NULL;
 
 	va_start(ap, fmt);
-	talloc_set_name_v(ptr, fmt, ap);
+	name = talloc_set_name_v(ptr, fmt, ap);
 	va_end(ap);
 
+	if (name == NULL) {
+		talloc_free(ptr);
+		return NULL;
+	}
+
 	return ptr;
 }
 
@@ -474,14 +483,20 @@
 {
 	va_list ap;
 	void *ptr;
+	const char *name;
 
 	ptr = _talloc(NULL, 0);
 	if (ptr == NULL) return NULL;
 
 	va_start(ap, fmt);
-	talloc_set_name_v(ptr, fmt, ap);
+	name = talloc_set_name_v(ptr, fmt, ap);
 	va_end(ap);
 
+	if (name == NULL) {
+		talloc_free(ptr);
+		return NULL;
+	}
+
 	return ptr;
 }
 

Modified: branches/SAMBA_4_0/source/lib/talloc/talloc.h
===================================================================
--- branches/SAMBA_4_0/source/lib/talloc/talloc.h	2006-06-21 19:26:48 UTC (rev 16445)
+++ branches/SAMBA_4_0/source/lib/talloc/talloc.h	2006-06-21 19:28:24 UTC (rev 16446)
@@ -114,7 +114,7 @@
 void talloc_increase_ref_count(const void *ptr);
 void *talloc_reference(const void *context, const void *ptr);
 int talloc_unlink(const void *context, void *ptr);
-void talloc_set_name(const void *ptr, const char *fmt, ...) PRINTF_ATTRIBUTE(2,3);
+const char *talloc_set_name(const void *ptr, const char *fmt, ...) PRINTF_ATTRIBUTE(2,3);
 void talloc_set_name_const(const void *ptr, const char *name);
 void *talloc_named(const void *context, size_t size, 
 		   const char *fmt, ...) PRINTF_ATTRIBUTE(3,4);



More information about the samba-cvs mailing list