patch 8.2.3581: reading character past end of line

Problem:    Reading character past end of line.
Solution:   Correct the cursor column.
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 072effd..052f230 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -7774,6 +7774,7 @@
 	eap->forceit = TRUE;
     }
     curwin->w_cursor.lnum = eap->line2;
+    check_cursor_col();
     do_put(eap->regname, NULL, eap->forceit ? BACKWARD : FORWARD, 1L,
 						       PUT_LINE|PUT_CURSLINE);
 }
diff --git a/src/testdir/test_put.vim b/src/testdir/test_put.vim
index 1b67c85..b2f2120 100644
--- a/src/testdir/test_put.vim
+++ b/src/testdir/test_put.vim
@@ -159,5 +159,14 @@
   bwipe!
 endfunc
 
+func Test_put_above_first_line()
+  new
+  let @" = 'text'
+  silent! normal 0o00
+  0put
+  call assert_equal('text', getline(1))
+  bwipe!
+endfunc
+
 
 " vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/version.c b/src/version.c
index 3d34c03..7bb4236 100644
--- a/src/version.c
+++ b/src/version.c
@@ -758,6 +758,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    3581,
+/**/
     3580,
 /**/
     3579,