svn commit: samba r26417 - in branches/SAMBA_4_0: . source/lib/util source/lib/util/tests

jelmer at samba.org jelmer at samba.org
Wed Dec 12 14:09:16 GMT 2007


Author: jelmer
Date: 2007-12-12 14:09:15 +0000 (Wed, 12 Dec 2007)
New Revision: 26417

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

Log:
Make str_list_copy(mem_ctx, NULL) return NULL rather than an empty list.
Modified:
   branches/SAMBA_4_0/
   branches/SAMBA_4_0/source/lib/util/tests/strlist.c
   branches/SAMBA_4_0/source/lib/util/util_strlist.c


Changeset:

Property changes on: branches/SAMBA_4_0
___________________________________________________________________
Name: bzr:revision-info
...skipped...
Name: bzr:revision-id:v3-trunk0
...skipped...

Modified: branches/SAMBA_4_0/source/lib/util/tests/strlist.c
===================================================================
--- branches/SAMBA_4_0/source/lib/util/tests/strlist.c	2007-12-12 11:08:32 UTC (rev 26416)
+++ branches/SAMBA_4_0/source/lib/util/tests/strlist.c	2007-12-12 14:09:15 UTC (rev 26417)
@@ -64,6 +64,29 @@
 	return true;
 }
 
+static bool test_list_copy(struct torture_context *tctx)
+{
+	const char **result;
+	const char *list[] = { "foo", "bar", NULL };
+	const char *empty_list[] = { NULL };
+	const char **null_list = NULL;
+
+	result = str_list_copy(tctx, list);
+	torture_assert_int_equal(tctx, str_list_length(result), 2, "list length");
+	torture_assert_str_equal(tctx, result[0], "foo", "element 0");
+	torture_assert_str_equal(tctx, result[1], "bar", "element 1");
+	torture_assert_str_equal(tctx, result[2], NULL, "element 2");
+
+	result = str_list_copy(tctx, empty_list);
+	torture_assert_int_equal(tctx, str_list_length(result), 0, "list length");
+	torture_assert_str_equal(tctx, result[0], NULL, "element 0");
+
+	result = str_list_copy(tctx, null_list);
+	torture_assert(tctx, result == NULL, "result NULL");
+	
+	return true;
+}
+
 struct torture_suite *torture_local_util_strlist(TALLOC_CTX *mem_ctx)
 {
 	struct torture_suite *suite = torture_suite_create(mem_ctx, "STRLIST");
@@ -75,5 +98,7 @@
 									   &test_lists_shell_strings[i]);
 	}
 
+	torture_suite_add_simple_test(suite, "list_copy", test_list_copy);
+
 	return suite;
 }

Modified: branches/SAMBA_4_0/source/lib/util/util_strlist.c
===================================================================
--- branches/SAMBA_4_0/source/lib/util/util_strlist.c	2007-12-12 11:08:32 UTC (rev 26416)
+++ branches/SAMBA_4_0/source/lib/util/util_strlist.c	2007-12-12 14:09:15 UTC (rev 26417)
@@ -199,9 +199,15 @@
 _PUBLIC_ const char **str_list_copy(TALLOC_CTX *mem_ctx, const char **list)
 {
 	int i;
-	const char **ret = talloc_array(mem_ctx, const char *, str_list_length(list)+1);
-	if (ret == NULL) return NULL;
+	const char **ret;
 
+	if (list == NULL)
+		return NULL;
+	
+	ret = talloc_array(mem_ctx, const char *, str_list_length(list)+1);
+	if (ret == NULL) 
+		return NULL;
+
 	for (i=0;list && list[i];i++) {
 		ret[i] = talloc_strdup(ret, list[i]);
 		if (ret[i] == NULL) {



More information about the samba-cvs mailing list