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

metze at samba.org metze at samba.org
Tue Sep 18 11:51:43 GMT 2007


Author: metze
Date: 2007-09-18 11:51:41 +0000 (Tue, 18 Sep 2007)
New Revision: 25206

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

Log:
unify logic of talloc_strdup() and talloc_strndup(),
only strlen() vs. strnlen() is the difference now.

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


Changeset:
Modified: branches/SAMBA_4_0/source/lib/talloc/talloc.c
===================================================================
--- branches/SAMBA_4_0/source/lib/talloc/talloc.c	2007-09-18 11:50:39 UTC (rev 25205)
+++ branches/SAMBA_4_0/source/lib/talloc/talloc.c	2007-09-18 11:51:41 UTC (rev 25206)
@@ -1109,20 +1109,27 @@
 	return newp;
 }
 
+static inline char *__talloc_strlendup(const void *t, const char *p, size_t len)
+{
+	char *ret;
+
+	ret = (char *)__talloc(t, len + 1);
+	if (unlikely(!ret)) return NULL;
+
+	memcpy(ret, p, len);
+	ret[len] = 0;
+
+	_talloc_set_name_const(ret, ret);
+	return ret;
+}
+
 /*
-  strdup with a talloc 
+  strdup with a talloc
 */
 char *talloc_strdup(const void *t, const char *p)
 {
-	char *ret;
-	if (!p) {
-		return NULL;
-	}
-	ret = (char *)talloc_memdup(t, p, strlen(p) + 1);
-	if (likely(ret)) {
-		_talloc_set_name_const(ret, ret);
-	}
-	return ret;
+	if (unlikely(!p)) return NULL;
+	return __talloc_strlendup(t, p, strlen(p));
 }
 
 /*
@@ -1152,21 +1159,12 @@
 }
 
 /*
-  strndup with a talloc 
+  strndup with a talloc
 */
 char *talloc_strndup(const void *t, const char *p, size_t n)
 {
-	size_t len;
-	char *ret;
-
-	for (len=0; len<n && p[len]; len++) ;
-
-	ret = (char *)__talloc(t, len + 1);
-	if (!ret) { return NULL; }
-	memcpy(ret, p, len);
-	ret[len] = 0;
-	_talloc_set_name_const(ret, ret);
-	return ret;
+	if (unlikely(!p)) return NULL;
+	return __talloc_strlendup(t, p, strnlen(p, n));
 }
 
 #ifndef HAVE_VA_COPY



More information about the samba-cvs mailing list