diff --git a/src/text.c b/src/text.c
index d3a0e1d597e3f701f058c4d47431cb5b4c143405..ecc9d635750bb0b7e2e355eba7f71e7aaf294e8a 100644
--- a/src/text.c
+++ b/src/text.c
@@ -3041,20 +3041,17 @@ void do_verbatim_input(void)
 }
 
 #ifdef ENABLE_WORDCOMPLETION
-/* Copy the found completion candidate. */
+/* Return a copy of the found completion candidate. */
 char *copy_completion(char *check_line, int start)
 {
 	char *word;
 	size_t position = start, len_of_word = 0, index = 0;
 
 	/* Find the length of the word by travelling to its end. */
-	while (is_word_mbchar(&check_line[position], FALSE)) {
-		size_t next = move_mbright(check_line, position);
-
-		len_of_word += next - position;
-		position = next;
-	}
+	while (is_word_mbchar(&check_line[position], FALSE))
+		position = move_mbright(check_line, position);
 
+	len_of_word = position - start;
 	word = charalloc(len_of_word + 1);
 
 	/* Simply copy the word. */