updated for version 7.0023
diff --git a/src/ex_cmds.c b/src/ex_cmds.c
index 7ed48b9..c78c643 100644
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -3599,12 +3599,7 @@
 	    }
 	    if (cmd[0] == '\\' && cmd[1] != 0)	/* skip escaped characters */
 		++cmd;
-#ifdef FEAT_MBYTE
-	    if (has_mbyte)
-		cmd += (*mb_ptr2len_check)(cmd);
-	    else
-#endif
-		++cmd;
+	    mb_ptr_adv(cmd);
 	}
 
 	if (!eap->skip)
@@ -4498,6 +4493,10 @@
     else
 	check_cursor();	/* cursor may be beyond the end of the line */
 
+    /* the cursor may not have moved in the text but a change in a previous
+     * line may move it on the screen */
+    changed_line_abv_curs();
+
     /* If it looks like no message was written, allow overwriting the
      * command with the report for number of changes. */
     if (msg_col == 0 && msg_scrolled == 0)