diff -Naur busybox-1.13.4.orig/editors/vi.c busybox-1.13.4/editors/vi.c
--- busybox-1.13.4.orig/editors/vi.c	2009-04-17 15:40:14.000000000 -0400
+++ busybox-1.13.4/editors/vi.c	2009-04-17 15:40:18.000000000 -0400
@@ -2339,19 +2339,14 @@
 		return -2;
 	}
 	charcnt = 0;
-	/* By popular request we do not open file with O_TRUNC,
-	 * but instead ftruncate() it _after_ successful write.
-	 * Might reduce amount of data lost on power fail etc.
-	 */
-	fd = open(fn, (O_WRONLY | O_CREAT), 0666);
+	fd = open(fn, (O_WRONLY | O_CREAT | O_TRUNC), 0666);
 	if (fd < 0)
 		return -1;
 	cnt = last - first + 1;
 	charcnt = full_write(fd, first, cnt);
-	ftruncate(fd, charcnt);
 	if (charcnt == cnt) {
 		// good write
-		//file_modified = FALSE;
+		//file_modified = FALSE; // the file has not been modified
 	} else {
 		charcnt = 0;
 	}
