diff -urN busybox-1.8.2/editors/vi.c busybox-1.8.2-vi/editors/vi.c --- busybox-1.8.2/editors/vi.c 2007-11-10 01:40:54.000000000 +0000 +++ busybox-1.8.2-vi/editors/vi.c 2007-12-10 16:26:01.000000000 +0000 @@ -184,6 +184,7 @@ #if ENABLE_FEATURE_VI_COLON char *initial_cmds[3]; // currently 2 entries, NULL terminated #endif + char readbuffer[MAX_LINELEN]; }; #define G (*ptr_to_globals) #define text (G.text ) @@ -200,6 +201,10 @@ #define term_orig (G.term_orig ) #define term_vi (G.term_vi ) #define initial_cmds (G.initial_cmds ) +#define readbuffer (G.readbuffer ) +#define INIT_G() do { \ + PTR_TO_GLOBALS = xzalloc(sizeof(G)); \ +} while (0) static int init_text_buffer(char *); // init from file or create new static void edit_file(char *); // edit one file @@ -321,7 +326,7 @@ my_pid = getpid(); #endif - PTR_TO_GLOBALS = xzalloc(sizeof(G)); + INIT_G(); #if ENABLE_FEATURE_VI_CRASHME srand((long) my_pid); @@ -2142,8 +2147,6 @@ return safe_poll(pfd, 1, hund*10) > 0; } -#define readbuffer bb_common_bufsiz1 - static int readed_for_parse; //----- IO Routines --------------------------------------------