diff --git a/src/winio.c b/src/winio.c
index 045dce3a521aaf42cbf3fd27d6a7cb7feefe367f..4395db704b4f6fb76770a99489ec834df0bc2050 100644
--- a/src/winio.c
+++ b/src/winio.c
@@ -3000,8 +3000,10 @@ size_t get_softwrap_breakpoint(const char *text, size_t leftedge,
     int char_len = 0;
 	/* Length of current character, in bytes. */
 
-    while (*text != '\0' && column < leftedge)
-	text += parse_mbchar(text, NULL, &column);
+    while (*text != '\0' && column < leftedge) {
+	char_len = parse_mbchar(text, NULL, &column);
+	text += char_len;
+    }
 
     /* The intention is to use the entire available width. */
     goal_column = leftedge + editwincols;