changeset 24794:fd245e5d4585 v8.2.2935

patch 8.2.2935: calculating register width is not always needed Commit: https://github.com/vim/vim/commit/6c4c404c580fadd69e39297a6cb4b214f2fcb6d6 Author: Bram Moolenaar <Bram@vim.org> Date: Fri Jun 4 19:17:07 2021 +0200 patch 8.2.2935: calculating register width is not always needed Problem: Calculating register width is not always needed. (Christian Brabandt) Solution: Only calculate the width when the type is MBLOCK.
author Bram Moolenaar <Bram@vim.org>
date Fri, 04 Jun 2021 19:30:03 +0200
parents 83d41b2de004
children 05a337d1fe73
files src/register.c src/version.c
diffstat 2 files changed, 14 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/src/register.c
+++ b/src/register.c
@@ -2836,7 +2836,6 @@ str_to_reg(
     char_u	**ss;
     char_u	**pp;
     long	maxlen;
-    int	charlen;
 
     if (y_ptr->y_array == NULL)		// NULL means empty register
 	y_ptr->y_size = 0;
@@ -2895,23 +2894,28 @@ str_to_reg(
     {
 	for (ss = (char_u **) str; *ss != NULL; ++ss, ++lnum)
 	{
-	    charlen = MB_CHARLEN(*ss);
-	    i = (long)STRLEN(*ss);
-	    pp[lnum] = vim_strnsave(*ss, i);
-	    if (charlen > maxlen)
-		maxlen = charlen;
+	    pp[lnum] = vim_strsave(*ss);
+	    if (type == MBLOCK)
+	    {
+		int charlen = mb_string2cells(*ss, -1);
+
+		if (charlen > maxlen)
+		    maxlen = charlen;
+	    }
 	}
     }
     else
     {
 	for (start = 0; start < len + extraline; start += i + 1)
 	{
-	    charlen = 0;
+	    int charlen = 0;
+
 	    for (i = start; i < len; ++i)	// find the end of the line
 	    {
 		if (str[i] == '\n')
 		    break;
-		charlen += mb_ptr2cells_len(str + i, len - i);
+		if (type == MBLOCK)
+		    charlen += mb_ptr2cells_len(str + i, len - i);
 	    }
 	    i -= start;			// i is now length of line
 	    if (charlen > maxlen)
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2935,
+/**/
     2934,
 /**/
     2933,