diff --git a/src/text.c b/src/text.c
index 592e5a780a773cc9c18eb7e9ce553ff496121d70..5b7c0cf3c3c90441454d5f5cc088f7f456560fdb 100644
--- a/src/text.c
+++ b/src/text.c
@@ -1674,15 +1674,16 @@ ssize_t break_line(const char *line, ssize_t goal, bool snap_at_nl)
 	return -1;
     }
 
+    /* Move the pointer back to the last blank, and then step beyond it. */
     line += lastblank - index;
-    line += parse_mbchar(line, NULL, NULL);
+    char_len = parse_mbchar(line, NULL, NULL);
+    line += char_len;
 
-    /* Skip any consecutive blanks after the last found blank. */
+    /* Skip any consecutive blanks after the last blank. */
     while (*line != '\0' && is_blank_mbchar(line)) {
+	lastblank += char_len;
 	char_len = parse_mbchar(line, NULL, NULL);
-
 	line += char_len;
-	lastblank += char_len;
     }
 
     return lastblank;