patch 8.1.1552: cursor position is wrong after sign column changes

Problem:    Cursor position is wrong after sign column appears or disappears.
            (Yegappan Lakshmanan)
Solution:   Call changed_line_abv_curs() instead of changed_cline_bef_curs().
diff --git a/src/sign.c b/src/sign.c
index e8288d6..2407853 100644
--- a/src/sign.c
+++ b/src/sign.c
@@ -231,7 +231,7 @@
 	    if (buf->b_signlist == NULL)
 	    {
 		redraw_buf_later(buf, NOT_VALID);
-		changed_cline_bef_curs();
+		changed_line_abv_curs();
 	    }
 
 	    // first sign in signlist
@@ -531,7 +531,7 @@
     if (buf->b_signlist == NULL)
     {
 	redraw_buf_later(buf, NOT_VALID);
-	changed_cline_bef_curs();
+	changed_line_abv_curs();
     }
 
     return lnum;
@@ -651,7 +651,7 @@
     if (buf->b_signlist != NULL && curwin != NULL)
     {
 	redraw_buf_later(buf, NOT_VALID);
-	changed_cline_bef_curs();
+	changed_line_abv_curs();
     }
 
     lastp = &buf->b_signlist;
diff --git a/src/testdir/dumps/Test_sign_cursor_01.dump b/src/testdir/dumps/Test_sign_cursor_01.dump
new file mode 100644
index 0000000..9ca4481
--- /dev/null
+++ b/src/testdir/dumps/Test_sign_cursor_01.dump
@@ -0,0 +1,6 @@
+| +0#0000e05#a8a8a8255@1|x+0#0000000#ffffff0@72
+| +0#0000e05#a8a8a8255@1|x+0#0000000#ffffff0@1| @70
+|=+0&#ffff4012|>>m+0&#ffffff0@3| @68
+| +0#0000e05#a8a8a8255@1|y+0#0000000#ffffff0@3| @68
+|~+0#4040ff13&| @73
+| +0#0000000&@56|2|,|1| @10|A|l@1| 
diff --git a/src/testdir/dumps/Test_sign_cursor_02.dump b/src/testdir/dumps/Test_sign_cursor_02.dump
new file mode 100644
index 0000000..92643c3
--- /dev/null
+++ b/src/testdir/dumps/Test_sign_cursor_02.dump
@@ -0,0 +1,6 @@
+|x+0&#ffffff0@74
+>m@3| @70
+|y@3| @70
+|~+0#4040ff13&| @73
+|~| @73
+|:+0#0000000&|s|i|g|n| |u|n|p|l|a|c|e| |1|0| @40|2|,|1| @10|A|l@1| 
diff --git a/src/testdir/test_signs.vim b/src/testdir/test_signs.vim
index 3b17ecc..140aa82 100644
--- a/src/testdir/test_signs.vim
+++ b/src/testdir/test_signs.vim
@@ -3,6 +3,8 @@
 source check.vim
 CheckFeature signs
 
+source screendump.vim
+
 func Test_sign()
   new
   call setline(1, ['a', 'b', 'c', 'd'])
@@ -1706,3 +1708,31 @@
   sign undefine sign1
   enew! | only!
 endfunc
+
+" Test for correct cursor position after the sign column appears or disappears.
+func Test_sign_cursor_position()
+  if !CanRunVimInTerminal()
+    throw 'Skipped: cannot make screendumps'
+  endif
+
+  let lines =<< trim END
+	call setline(1, [repeat('x', 75), 'mmmm', 'yyyy'])
+	call cursor(2,1)
+   	sign define s1 texthl=Search text==>
+	redraw
+   	sign place 10 line=2 name=s1
+  END
+  call writefile(lines, 'XtestSigncolumn')
+  let buf = RunVimInTerminal('-S XtestSigncolumn', {'rows': 6})
+  call VerifyScreenDump(buf, 'Test_sign_cursor_01', {})
+
+  " update cursor position calculation
+  call term_sendkeys(buf, "lh")
+  call term_sendkeys(buf, ":sign unplace 10\<CR>")
+  call VerifyScreenDump(buf, 'Test_sign_cursor_02', {})
+
+
+  " clean up
+  call StopVimInTerminal(buf)
+  call delete('XtestSigncolumn')
+endfunc
diff --git a/src/version.c b/src/version.c
index b213bda..f960d52 100644
--- a/src/version.c
+++ b/src/version.c
@@ -778,6 +778,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1552,
+/**/
     1551,
 /**/
     1550,