patch 9.0.0164: using freed memory with put command
Problem: Using freed memory with put command.
Solution: Get byte offset before replacing the line.
diff --git a/src/register.c b/src/register.c
index f34a0dd..2dafeab 100644
--- a/src/register.c
+++ b/src/register.c
@@ -2099,13 +2099,15 @@
ptr += yanklen;
}
STRMOVE(ptr, oldp + col);
- ml_replace(lnum, newp, FALSE);
-
- inserted_bytes(lnum, col, totlen);
// compute the byte offset for the last character
first_byte_off = mb_head_off(newp, ptr - 1);
+ // Note: this may free "newp"
+ ml_replace(lnum, newp, FALSE);
+
+ inserted_bytes(lnum, col, totlen);
+
// Place cursor on last putted char.
if (lnum == curwin->w_cursor.lnum)
{
diff --git a/src/version.c b/src/version.c
index 9207b7f..be59f1b 100644
--- a/src/version.c
+++ b/src/version.c
@@ -736,6 +736,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 164,
+/**/
163,
/**/
162,