From: David Lawrence Ramsey Date: Mon, 9 Jul 2007 23:24:37 +0000 (+0000) Subject: in do_replace_loop(), fix problem where replacing e.g. single-byte X-Git-Tag: v2.1.0~95 X-Git-Url: https://git.wh0rd.org/?a=commitdiff_plain;h=a90e6c32400e84aa94c9463823a68a131e2d155e;p=nano.git in do_replace_loop(), fix problem where replacing e.g. single-byte characters with multibyte ones could result in openfile->totsize's being miscalculated git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@4130 35c25a1d-7b9e-4130-9fde-d3aeb78583b8 --- diff --git a/ChangeLog b/ChangeLog index 04a76926..3ed253cc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -7,6 +7,9 @@ has_blank_mbchars): Simplify by using for loops instead of while loops where possible, to match the single-byte versions of these functions. + * search.c (do_replace_loop): Fix problem where replacing e.g. + single-byte characters with multibyte ones could result in + openfile->totsize's being miscalculated. 2007-07-06 David Lawrence Ramsey diff --git a/src/search.c b/src/search.c index a1e5d644..4761623d 100644 --- a/src/search.c +++ b/src/search.c @@ -827,7 +827,8 @@ ssize_t do_replace_loop( openfile->current_x += match_len + length_change - 1; /* Cleanup. */ - openfile->totsize += length_change; + openfile->totsize += mbstrlen(copy) - + mbstrlen(openfile->current->data); free(openfile->current->data); openfile->current->data = copy;