From 85be8563fe5aff686e9e30d6afff401ccd976f2a Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Thu, 25 Nov 2021 20:40:11 +0000 Subject: [PATCH] patch 8.2.3678: illegal memory access Problem: Illegal memory access. Solution: Ignore changed indent when computing byte offset. --- src/register.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/register.c b/src/register.c index 49f4079..7f77ada 100644 --- a/src/register.c +++ b/src/register.c @@ -1969,6 +1969,7 @@ do_put( } else { + size_t len; // Insert at least one line. When y_type is MCHAR, break the first // line in two. for (cnt = 1; cnt <= count; ++cnt) @@ -2074,11 +2075,12 @@ error: // Put the '] mark on the first byte of the last inserted character. // Correct the length for change in indent. curbuf->b_op_end.lnum = lnum; - col = (colnr_T)STRLEN(y_array[y_size - 1]) - lendiff; + len = STRLEN(y_array[y_size - 1]); + col = (colnr_T)len - lendiff; if (col > 1) curbuf->b_op_end.col = col - 1 - mb_head_off(y_array[y_size - 1], - y_array[y_size - 1] + col - 1); + y_array[y_size - 1] + len - 1); else curbuf->b_op_end.col = 0; -- 1.8.3.1