vi: code shrink
authorDenys Vlasenko <vda.linux@googlemail.com>
Wed, 3 Apr 2019 14:30:50 +0000 (16:30 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Wed, 3 Apr 2019 14:30:50 +0000 (16:30 +0200)
function                                             old     new   delta
new_screen                                            84      75      -9

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
editors/vi.c

index ce261feca9a34883a6ba76840b6d80feeb7c25d1..38177dec4c2a84455900f1caa6fe24a6f5e59f84 100644 (file)
@@ -722,20 +722,25 @@ static void screen_erase(void)
        memset(screen, ' ', screensize);        // clear new screen
 }
 
-static char *new_screen(int ro, int co)
+static void new_screen(int ro, int co)
 {
-       int li;
+       char *s;
 
        free(screen);
        screensize = ro * co + 8;
-       screen = xmalloc(screensize);
+       s = screen = xmalloc(screensize);
        // initialize the new screen. assume this will be a empty file.
        screen_erase();
-       //   non-existent text[] lines start with a tilde (~).
-       for (li = 1; li < ro - 1; li++) {
-               screen[(li * co) + 0] = '~';
+       // non-existent text[] lines start with a tilde (~).
+       //screen[(1 * co) + 0] = '~';
+       //screen[(2 * co) + 0] = '~';
+       //..
+       //screen[((ro-2) * co) + 0] = '~';
+       ro -= 2;
+       while (--ro >= 0) {
+               s += co;
+               *s = '~';
        }
-       return screen;
 }
 
 //----- Synchronize the cursor to Dot --------------------------