diff --git a/ChangeLog b/ChangeLog
index 6f524e3d77fb6c51b4e1f8af116b9c7a98df6dee..2458532effee8b9303d48309aa3e6ee1efafa804 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -317,9 +317,8 @@ CVS code -
   do_enter()
 	- Don't update the edit window until we set placewewant. (DLR)
   break_line()
-	- Fix problems where a line could be broken in the middle of
-	  a multibyte character, and goal could be miscalculated on lines
-	  containing tabs. (DLR)
+	- Fix a problem where a line could be broken in the middle of a
+	  multibyte character. (DLR)
   do_word_count()
 	- Rename to do_wordlinechar_count(), and expand to also count
 	  the number of lines and characters in the file or selection,
diff --git a/src/text.c b/src/text.c
index 7300010b1f048a09bc9c953d3fbb74d1ff349431..0fc43d403c3301a0d9d2445cde217ff244499a23 100644
--- a/src/text.c
+++ b/src/text.c
@@ -570,16 +570,12 @@ ssize_t break_line(const char *line, ssize_t goal, bool newline)
 	 * found with short enough display width.  */
     ssize_t cur_loc = 0;
 	/* Current index in line. */
-    size_t pos = 0;
-	/* Current column position in line. */
-    size_t old_pos;
-	/* Previous column position in line. */
     int line_len;
 
     assert(line != NULL);
 
     while (*line != '\0' && goal >= 0) {
-	old_pos = pos;
+	size_t pos = 0;
 
 	line_len = parse_mbchar(line, NULL, &pos);
 
@@ -590,7 +586,7 @@ ssize_t break_line(const char *line, ssize_t goal, bool newline)
 		break;
 	}
 
-	goal -= pos - old_pos;
+	goal -= pos;
 	line += line_len;
 	cur_loc += line_len;
     }