Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Check what happens when splitting empty strings, and fix the resulting bug
authormquinson <mquinson@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Wed, 6 Jun 2007 13:02:12 +0000 (13:02 +0000)
committermquinson <mquinson@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Wed, 6 Jun 2007 13:02:12 +0000 (13:02 +0000)
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@3560 48e7efb5-ca39-0410-a469-dd3cf9ba447f

src/xbt/xbt_str.c
src/xbt_str_unit.c

index dfe4f28..83deab8 100644 (file)
@@ -350,6 +350,7 @@ XBT_TEST_UNIT("xbt_str_split_quoted",test_split_quoted, "test the function xbt_s
   xbt_dynar_t d;
   char *s;
 
   xbt_dynar_t d;
   char *s;
 
+  mytest("Empty", "", "");
   mytest("Basic test", "toto tutu", "totoXXXtutu");
   mytest("Useless backslashes", "\\t\\o\\t\\o \\t\\u\\t\\u", "totoXXXtutu");
   mytest("Protected space", "toto\\ tutu", "toto tutu");
   mytest("Basic test", "toto tutu", "totoXXXtutu");
   mytest("Useless backslashes", "\\t\\o\\t\\o \\t\\u\\t\\u", "totoXXXtutu");
   mytest("Protected space", "toto\\ tutu", "toto tutu");
@@ -372,6 +373,10 @@ char *xbt_str_join(xbt_dynar_t dyn, const char*sep) {
   int cpt;
   char *cursor;
   char *res,*p;
   int cpt;
   char *cursor;
   char *res,*p;
+  
+  if (!dyn_len)
+    return xbt_strdup("");
+
   /* compute the length */
   xbt_dynar_foreach(dyn,cpt,cursor) {
     len+=strlen(cursor);
   /* compute the length */
   xbt_dynar_foreach(dyn,cpt,cursor) {
     len+=strlen(cursor);
index 13bbfbe..d34d8dc 100644 (file)
@@ -23,6 +23,7 @@ XBT_TEST_UNIT("xbt_str_split_quoted",test_split_quoted, "test the function xbt_s
   xbt_dynar_t d;
   char *s;
 
   xbt_dynar_t d;
   char *s;
 
+  mytest("Empty", "", "");
   mytest("Basic test", "toto tutu", "totoXXXtutu");
   mytest("Useless backslashes", "\\t\\o\\t\\o \\t\\u\\t\\u", "totoXXXtutu");
   mytest("Protected space", "toto\\ tutu", "toto tutu");
   mytest("Basic test", "toto tutu", "totoXXXtutu");
   mytest("Useless backslashes", "\\t\\o\\t\\o \\t\\u\\t\\u", "totoXXXtutu");
   mytest("Protected space", "toto\\ tutu", "toto tutu");