svn commit: samba r20208 - in branches: SAMBA_3_0/source/lib SAMBA_3_0_24/source/lib

jra at samba.org jra at samba.org
Sat Dec 16 05:02:22 GMT 2006


Author: jra
Date: 2006-12-16 05:02:21 +0000 (Sat, 16 Dec 2006)
New Revision: 20208

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

Log:
Change sprintf_append() never to use malloc,
but always use a talloc context.
Thanks to simo for pointing this out.
Jeremy.

Modified:
   branches/SAMBA_3_0/source/lib/tallocmsg.c
   branches/SAMBA_3_0/source/lib/util_str.c
   branches/SAMBA_3_0_24/source/lib/tallocmsg.c
   branches/SAMBA_3_0_24/source/lib/util_str.c


Changeset:
Modified: branches/SAMBA_3_0/source/lib/tallocmsg.c
===================================================================
--- branches/SAMBA_3_0/source/lib/tallocmsg.c	2006-12-16 01:52:06 UTC (rev 20207)
+++ branches/SAMBA_3_0/source/lib/tallocmsg.c	2006-12-16 05:02:21 UTC (rev 20208)
@@ -26,6 +26,7 @@
  **/
 
 struct msg_pool_usage_state {
+	TALLOC_CTX *mem_ctx;
 	ssize_t len;
 	size_t buflen;
 	char *s;
@@ -37,13 +38,13 @@
 	struct msg_pool_usage_state *state = (struct msg_pool_usage_state *)_s;
 
 	if (is_ref) {
-		sprintf_append(NULL, &state->s, &state->len, &state->buflen,
+		sprintf_append(state->mem_ctx, &state->s, &state->len, &state->buflen,
 			       "%*sreference to: %s\n", depth*4, "", name);
 		return;
 	}
 
 	if (depth == 0) {
-		sprintf_append(NULL, &state->s, &state->len, &state->buflen,
+		sprintf_append(state->mem_ctx, &state->s, &state->len, &state->buflen,
 			       "%stalloc report on '%s' (total %6lu bytes in %3lu blocks)\n", 
 			       (max_depth < 0 ? "full " :""), name,
 			       (unsigned long)talloc_total_size(ptr),
@@ -51,7 +52,7 @@
 		return;
 	}
 
-	sprintf_append(NULL, &state->s, &state->len, &state->buflen,
+	sprintf_append(state->mem_ctx, &state->s, &state->len, &state->buflen,
 		       "%*s%-30s contains %6lu bytes in %3lu blocks (ref %d)\n", 
 		       depth*4, "",
 		       name,
@@ -73,6 +74,10 @@
 	
 	DEBUG(2,("Got POOL_USAGE\n"));
 
+	state.mem_ctx = talloc_init("msg_pool_usage");
+	if (!state.mem_ctx) {
+		return;
+	}
 	state.len	= 0;
 	state.buflen	= 512;
 	state.s		= NULL;
@@ -80,13 +85,14 @@
 	talloc_report_depth_cb(NULL, 0, -1, msg_pool_usage_helper, &state);
 
 	if (!state.s) {
+		talloc_destroy(state.mem_ctx);
 		return;
 	}
 	
 	message_send_pid(src_pid, MSG_POOL_USAGE,
 			 state.s, strlen(state.s)+1, True);
 
-	SAFE_FREE(state.s);
+	talloc_destroy(state.mem_ctx);
 }
 
 /**

Modified: branches/SAMBA_3_0/source/lib/util_str.c
===================================================================
--- branches/SAMBA_3_0/source/lib/util_str.c	2006-12-16 01:52:06 UTC (rev 20207)
+++ branches/SAMBA_3_0/source/lib/util_str.c	2006-12-16 05:02:21 UTC (rev 20208)
@@ -2458,11 +2458,7 @@
 		if (*bufsize == 0)
 			*bufsize = 128;
 
-		if (mem_ctx != NULL)
-			*string = TALLOC_ARRAY(mem_ctx, char, *bufsize);
-		else
-			*string = SMB_MALLOC_ARRAY(char, *bufsize);
-
+		*string = TALLOC_ARRAY(mem_ctx, char, *bufsize);
 		if (*string == NULL)
 			goto error;
 	}
@@ -2484,13 +2480,8 @@
 	}
 
 	if (increased) {
-		if (mem_ctx != NULL) {
-			*string = TALLOC_REALLOC_ARRAY(mem_ctx, *string, char,
-						       *bufsize);
-		} else {
-			*string = SMB_REALLOC_ARRAY(*string, char, *bufsize);
-		}
-
+		*string = TALLOC_REALLOC_ARRAY(mem_ctx, *string, char,
+					       *bufsize);
 		if (*string == NULL) {
 			goto error;
 		}
@@ -2503,9 +2494,6 @@
 
  error:
 	*len = -1;
-	if (mem_ctx == NULL) {
-		SAFE_FREE(*string);
-	}
 	*string = NULL;
 }
 

Modified: branches/SAMBA_3_0_24/source/lib/tallocmsg.c
===================================================================
--- branches/SAMBA_3_0_24/source/lib/tallocmsg.c	2006-12-16 01:52:06 UTC (rev 20207)
+++ branches/SAMBA_3_0_24/source/lib/tallocmsg.c	2006-12-16 05:02:21 UTC (rev 20208)
@@ -26,6 +26,7 @@
  **/
 
 struct msg_pool_usage_state {
+	TALLOC_CTX *mem_ctx;
 	ssize_t len;
 	size_t buflen;
 	char *s;
@@ -37,13 +38,13 @@
 	struct msg_pool_usage_state *state = (struct msg_pool_usage_state *)_s;
 
 	if (is_ref) {
-		sprintf_append(NULL, &state->s, &state->len, &state->buflen,
+		sprintf_append(state->mem_ctx, &state->s, &state->len, &state->buflen,
 			       "%*sreference to: %s\n", depth*4, "", name);
 		return;
 	}
 
 	if (depth == 0) {
-		sprintf_append(NULL, &state->s, &state->len, &state->buflen,
+		sprintf_append(state->mem_ctx, &state->s, &state->len, &state->buflen,
 			       "%stalloc report on '%s' (total %6lu bytes in %3lu blocks)\n", 
 			       (max_depth < 0 ? "full " :""), name,
 			       (unsigned long)talloc_total_size(ptr),
@@ -51,7 +52,7 @@
 		return;
 	}
 
-	sprintf_append(NULL, &state->s, &state->len, &state->buflen,
+	sprintf_append(state->mem_ctx, &state->s, &state->len, &state->buflen,
 		       "%*s%-30s contains %6lu bytes in %3lu blocks (ref %d)\n", 
 		       depth*4, "",
 		       name,
@@ -73,6 +74,10 @@
 	
 	DEBUG(2,("Got POOL_USAGE\n"));
 
+	state.mem_ctx = talloc_init("msg_pool_usage");
+	if (!state.mem_ctx) {
+		return;
+	}
 	state.len	= 0;
 	state.buflen	= 512;
 	state.s		= NULL;
@@ -80,13 +85,14 @@
 	talloc_report_depth_cb(NULL, 0, -1, msg_pool_usage_helper, &state);
 
 	if (!state.s) {
+		talloc_destroy(state.mem_ctx);
 		return;
 	}
 	
 	message_send_pid(src_pid, MSG_POOL_USAGE,
 			 state.s, strlen(state.s)+1, True);
 
-	SAFE_FREE(state.s);
+	talloc_destroy(state.mem_ctx);
 }
 
 /**

Modified: branches/SAMBA_3_0_24/source/lib/util_str.c
===================================================================
--- branches/SAMBA_3_0_24/source/lib/util_str.c	2006-12-16 01:52:06 UTC (rev 20207)
+++ branches/SAMBA_3_0_24/source/lib/util_str.c	2006-12-16 05:02:21 UTC (rev 20208)
@@ -2458,11 +2458,7 @@
 		if (*bufsize == 0)
 			*bufsize = 128;
 
-		if (mem_ctx != NULL)
-			*string = TALLOC_ARRAY(mem_ctx, char, *bufsize);
-		else
-			*string = SMB_MALLOC_ARRAY(char, *bufsize);
-
+		*string = TALLOC_ARRAY(mem_ctx, char, *bufsize);
 		if (*string == NULL)
 			goto error;
 	}
@@ -2484,13 +2480,8 @@
 	}
 
 	if (increased) {
-		if (mem_ctx != NULL) {
-			*string = TALLOC_REALLOC_ARRAY(mem_ctx, *string, char,
-						       *bufsize);
-		} else {
-			*string = SMB_REALLOC_ARRAY(*string, char, *bufsize);
-		}
-
+		*string = TALLOC_REALLOC_ARRAY(mem_ctx, *string, char,
+					       *bufsize);
 		if (*string == NULL) {
 			goto error;
 		}
@@ -2503,9 +2494,6 @@
 
  error:
 	*len = -1;
-	if (mem_ctx == NULL) {
-		SAFE_FREE(*string);
-	}
 	*string = NULL;
 }
 



More information about the samba-cvs mailing list