diff --git a/ChangeLog b/ChangeLog
index 3fa7ae0d0ab3ab43796648db390fc90fd6d647b8..f2931991c17b5b59286f15211d924e7490d1d527 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -3,6 +3,9 @@ CVS code -
 	- Miscellaneous comment fixes. (DLR)
 	- Remove unnecessary #ifdef around termios.h #include in nano.c.
 	  (DLR)
+- text.c:
+  justify_format()
+	- Remove redundant character parsing. (DLR)
 
 GNU nano 1.3.10 - 2005.12.23
 - General:
diff --git a/src/text.c b/src/text.c
index 3461e66e80fc68f7927d1380214e3319373a3997..f89262d34d3c807373503e526c7cc4c145ab92a1 100644
--- a/src/text.c
+++ b/src/text.c
@@ -744,13 +744,11 @@ void justify_format(filestruct *paragraph, size_t skip)
     new_end = new_paragraph_data + skip;
 
     while (*end != '\0') {
-	int end_len;
+	int end_len = parse_mbchar(end, NULL, NULL);
 
 	/* If this character is blank, make sure that it's a space with
 	 * no blanks after it. */
 	if (is_blank_mbchar(end)) {
-	    end_len = parse_mbchar(end, NULL, NULL);
-
 	    *new_end = ' ';
 	    new_end++;
 	    end += end_len;
@@ -774,8 +772,6 @@ void justify_format(filestruct *paragraph, size_t skip)
 	 * more than two blanks after it, and make sure that the blanks
 	 * are spaces. */
 	} else if (mbstrchr(punct, end) != NULL) {
-	    end_len = parse_mbchar(end, NULL, NULL);
-
 	    while (end_len > 0) {
 		*new_end = *end;
 		new_end++;
@@ -827,8 +823,6 @@ void justify_format(filestruct *paragraph, size_t skip)
 	/* If this character is neither blank nor punctuation, leave it
 	 * alone. */
 	} else {
-	    end_len = parse_mbchar(end, NULL, NULL);
-
 	    while (end_len > 0) {
 		*new_end = *end;
 		new_end++;