# HG changeset patch # User Karl Heuer # Date 840237249 0 # Node ID 5ffb83189a1b29231200abad2768f0558453f9ad # Parent 48c181ba52a892f3038ef852ac191e97ff198a89 (Fdelete_backward_char): Fix off-by-one error. Treat deleted newline specially. diff -r 48c181ba52a8 -r 5ffb83189a1b src/cmds.c --- a/src/cmds.c Fri Aug 16 19:09:34 1996 +0000 +++ b/src/cmds.c Fri Aug 16 23:14:09 1996 +0000 @@ -208,19 +208,19 @@ Lisp_Object n, killflag; { Lisp_Object value; - int deleted_tab = 0; + int deleted_special = 0; int i; CHECK_NUMBER (n, 0); - /* See if we are about to delete a tab backwards. */ - for (i = 0; i < XINT (n); i++) + /* See if we are about to delete a tab or newline backwards. */ + for (i = 1; i <= XINT (n); i++) { if (point - i < BEGV) break; - if (FETCH_CHAR (point - i) == '\t') + if (FETCH_CHAR (point - i) == '\t' || FETCH_CHAR (point - i) == '\n') { - deleted_tab = 1; + deleted_special = 1; break; } } @@ -231,7 +231,7 @@ unless at end of line. */ if (XINT (n) > 0 && ! NILP (current_buffer->overwrite_mode) - && ! deleted_tab + && ! deleted_special && ! (point == ZV || FETCH_CHAR (point) == '\n')) { Finsert_char (make_number (' '), XINT (n));