From cd07ad5cab7e5201885cf4e545d3f96abb1606d0 Mon Sep 17 00:00:00 2001 From: mquinson Date: Fri, 12 Dec 2008 00:43:15 +0000 Subject: [PATCH 1/1] 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 --- src/xbt/xbt_strbuff.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) 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; } -- 2.20.1