This is the behaviour observed with standard vim and busybox vi of at
least 1.22.1.  It was changed with commit 32afd3a "vi: some
simplifications" which happened before 1.23.0.

Mistyping filename on command line happens fairly often and it's better
we restore the old behaviour to avoid a few unnecessary flash storage
writes and sometimes efforts of debugging bugs caused by those unneeded
stray files...

Signed-off-by: Yousong Zhou <[email protected]>
---
 editors/vi.c | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/editors/vi.c b/editors/vi.c
index bbaac50..4b5b7cd 100644
--- a/editors/vi.c
+++ b/editors/vi.c
@@ -715,14 +715,6 @@ static int init_text_buffer(char *fn)
 {
        int rc;
 
-       flush_undo_data();
-       modified_count = 0;
-       last_modified_count = -1;
-#if ENABLE_FEATURE_VI_YANKMARK
-       /* init the marks */
-       memset(mark, 0, sizeof(mark));
-#endif
-
        /* allocate/reallocate text buffer */
        free(text);
        text_size = 10240;
@@ -737,6 +729,14 @@ static int init_text_buffer(char *fn)
                // file doesnt exist. Start empty buf with dummy line
                char_insert(text, '\n', NO_UNDO);
        }
+
+       flush_undo_data();
+       modified_count = 0;
+       last_modified_count = -1;
+#if ENABLE_FEATURE_VI_YANKMARK
+       /* init the marks */
+       memset(mark, 0, sizeof(mark));
+#endif
        return rc;
 }
 
-- 
2.6.4

_______________________________________________
busybox mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to