patch 9.1.0430: getregionpos() doesn't handle one char selection

Problem:  getregionpos() doesn't handle one char selection.
Solution: Handle startspaces differently when is_oneChar is set.
          Also add a test for an exclusive charwise selection with
          multibyte chars (zeertzjq)

closes: #14825

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
diff --git a/src/ops.c b/src/ops.c
index 605a664..1dd36ab 100644
--- a/src/ops.c
+++ b/src/ops.c
@@ -2444,13 +2444,13 @@
     int			inclusive)
 {
     colnr_T startcol = 0, endcol = MAXCOL;
-    int	    is_oneChar = FALSE;
     colnr_T cs, ce;
     char_u *p;
 
     p = ml_get(lnum);
     bdp->startspaces = 0;
     bdp->endspaces = 0;
+    bdp->is_oneChar = FALSE;
     bdp->start_char_vcols = 0;
 
     if (lnum == start.lnum)
@@ -2487,7 +2487,7 @@
 		if (start.lnum == end.lnum && start.col == end.col)
 		{
 		    // Special case: inside a single char
-		    is_oneChar = TRUE;
+		    bdp->is_oneChar = TRUE;
 		    bdp->startspaces = end.coladd - start.coladd + inclusive;
 		    endcol = startcol;
 		}
@@ -2501,7 +2501,7 @@
     }
     if (endcol == MAXCOL)
 	endcol = ml_get_len(lnum);
-    if (startcol > endcol || is_oneChar)
+    if (startcol > endcol || bdp->is_oneChar)
 	bdp->textlen = 0;
     else
 	bdp->textlen = endcol - startcol + inclusive;