From: mquinson Date: Fri, 12 Dec 2008 00:43:15 +0000 (+0000) Subject: kill an unused variable, fix a segfault after resizing the buffer while varsubsting... X-Git-Tag: v3.3~66 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/cd07ad5cab7e5201885cf4e545d3f96abb1606d0?hp=38f4a536df6269449c99a095334a4488db4bd5f0 kill an unused variable, fix a segfault after resizing the buffer while varsubsting, and also copy the terminating \0 while resizing the buffer in similar conditions git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@6115 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- diff --git a/src/xbt/xbt_strbuff.c b/src/xbt/xbt_strbuff.c index 50e475aee8..9e5e949e70 100644 --- a/src/xbt/xbt_strbuff.c +++ b/src/xbt/xbt_strbuff.c @@ -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; }