Patch from Robert J. Osborne <rj@resourceinternational.com> that fixes
authorEric Andersen <andersen@codepoet.org>
Thu, 2 Aug 2001 05:26:41 +0000 (05:26 -0000)
committerEric Andersen <andersen@codepoet.org>
Thu, 2 Aug 2001 05:26:41 +0000 (05:26 -0000)
a bug in vi where the beginning of the text space was not checked
before dot is decremented for delete and escape sequences on an empty
file.

editors/vi.c
vi.c

index 38aee15d7f7993b4ffd05a7a0bd874439d59f394..8d7506d0f4db5ac2c84cc554019ac94ff7c4f273 100644 (file)
@@ -19,7 +19,7 @@
  */
 
 static const char vi_Version[] =
-       "$Id: vi.c,v 1.14 2001/07/31 15:01:12 kraai Exp $";
+       "$Id: vi.c,v 1.15 2001/08/02 05:26:41 andersen Exp $";
 
 /*
  * To compile for standalone use:
@@ -2640,12 +2640,12 @@ static Byte *char_insert(Byte * p, Byte c) // insert the char c at 'p'
                cmdcnt = 0;
                end_cmd_q();    // stop adding to q
                strcpy((char *) status_buffer, " ");    // clear the status buffer
-               if (p[-1] != '\n') {
+               if ((p[-1] != '\n') && (dot>text)) {
                        p--;
                }
        } else if (c == erase_char) {   // Is this a BS
                //     123456789
-               if (p[-1] != '\n') {
+               if ((p[-1] != '\n') && (dot>text)) {
                        p--;
                        p = text_hole_delete(p, p);     // shrink buffer 1 char
 #ifdef BB_FEATURE_VI_DOT_CMD
diff --git a/vi.c b/vi.c
index 38aee15d7f7993b4ffd05a7a0bd874439d59f394..8d7506d0f4db5ac2c84cc554019ac94ff7c4f273 100644 (file)
--- a/vi.c
+++ b/vi.c
@@ -19,7 +19,7 @@
  */
 
 static const char vi_Version[] =
-       "$Id: vi.c,v 1.14 2001/07/31 15:01:12 kraai Exp $";
+       "$Id: vi.c,v 1.15 2001/08/02 05:26:41 andersen Exp $";
 
 /*
  * To compile for standalone use:
@@ -2640,12 +2640,12 @@ static Byte *char_insert(Byte * p, Byte c) // insert the char c at 'p'
                cmdcnt = 0;
                end_cmd_q();    // stop adding to q
                strcpy((char *) status_buffer, " ");    // clear the status buffer
-               if (p[-1] != '\n') {
+               if ((p[-1] != '\n') && (dot>text)) {
                        p--;
                }
        } else if (c == erase_char) {   // Is this a BS
                //     123456789
-               if (p[-1] != '\n') {
+               if ((p[-1] != '\n') && (dot>text)) {
                        p--;
                        p = text_hole_delete(p, p);     // shrink buffer 1 char
 #ifdef BB_FEATURE_VI_DOT_CMD