diff --git a/src/sbbs3/wordwrap.c b/src/sbbs3/wordwrap.c index 62f4c8e5cbcd35b78d01f9ef416726d107a2f508..f096f928e081022e97848d756339ce59f0c81d50 100644 --- a/src/sbbs3/wordwrap.c +++ b/src/sbbs3/wordwrap.c @@ -272,6 +272,7 @@ struct paragraph { struct prefix prefix; char *text; size_t alloc_size; + size_t len; }; /* @@ -296,18 +297,18 @@ static void free_paragraphs(struct paragraph *paragraph, int count) */ static BOOL paragraph_append(struct paragraph *paragraph, const char *bytes, size_t count) { - size_t len = strlen(paragraph->text); char *new_text; - while (len + count + 1 > paragraph->alloc_size) { + while (paragraph->len + count + 1 > paragraph->alloc_size) { new_text = realloc(paragraph->text, paragraph->alloc_size * 2); if (new_text == NULL) return FALSE; paragraph->text = new_text; paragraph->alloc_size *= 2; } - memcpy(paragraph->text + len, bytes, count); - paragraph->text[len+count] = 0; + memcpy(paragraph->text + paragraph->len, bytes, count); + paragraph->text[paragraph->len+count] = 0; + paragraph->len += count; return TRUE; } @@ -342,6 +343,7 @@ static struct paragraph *word_unwrap(char *inbuf, int oldlen, BOOL handle_quotes } ret = newret; ret[paragraph].text = (char *)malloc(oldlen+1); + ret[paragraph].len = 0; ret[paragraph].prefix.bytes = NULL; if (ret[paragraph].text == NULL) { free_paragraphs(ret, paragraph+1);