Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
kill an unused variable, fix a segfault after resizing the buffer while varsubsting...
authormquinson <mquinson@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Fri, 12 Dec 2008 00:43:15 +0000 (00:43 +0000)
committermquinson <mquinson@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Fri, 12 Dec 2008 00:43:15 +0000 (00:43 +0000)
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@6115 48e7efb5-ca39-0410-a469-dd3cf9ba447f

src/xbt/xbt_strbuff.c

index 50e475a..9e5e949 100644 (file)
@@ -102,13 +102,13 @@ void xbt_strbuff_trim(xbt_strbuff_t b) {
  */
 void xbt_strbuff_varsubst(xbt_strbuff_t b, xbt_dict_t patterns) {
 
-  char *beg, *end; /* pointers around the parsed chunk */
+  char *end; /* pointers around the parsed chunk */
   int in_simple_quote=0, in_double_quote=0;
   int done = 0;
 
   if (b->data[0] == '\0')
     return;
-  end = beg = b->data;
+  end = b->data;
 
   while (!done) {
 
@@ -228,10 +228,11 @@ void xbt_strbuff_varsubst(xbt_strbuff_t b, xbt_dict_t patterns) {
               int offset = newdata - b->data;
               b->data = newdata;
               b->size = b->used + MAX(minimal_increment,tooshort);
+              end += offset;
               beg_subst += offset;
               end_subst += offset;
             }
-            memmove(beg_subst+val_len,end_subst, b->used-(end_subst - b->data)+1); /* move the end of the string a bit further */
+            memmove(beg_subst+val_len,end_subst, b->used-(end_subst - b->data)+2); /* move the end of the string a bit further */
             memmove(beg_subst,value,val_len); /* substitute */
             b->used = newused;
           }