vi: revert change in how "end of file list" is deteced - fixes 'q' in bare "vi"
authorDenys Vlasenko <vda.linux@googlemail.com>
Wed, 3 Apr 2019 14:35:23 +0000 (16:35 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Wed, 3 Apr 2019 14:35:23 +0000 (16:35 +0200)
function                                             old     new   delta
vi_main                                              273     272      -1
colon                                               2853    2852      -1
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-2)               Total: -2 bytes

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

index 38177dec4c2a84455900f1caa6fe24a6f5e59f84..c4360f8d3cb74ab6dce49fe1e3b8fa1db352342c 100644 (file)
@@ -2625,7 +2625,7 @@ static void colon(char *buf)
                if (useforce) {
                        if (*cmd == 'q') {
                                // force end of argv list
-                               optind = cmdline_filecnt - 1;
+                               optind = cmdline_filecnt;
                        }
                        editing = 0;
                        goto ret;
@@ -4384,7 +4384,7 @@ int vi_main(int argc, char **argv)
                edit_file(argv[optind]); // might be NULL on 1st iteration
                // NB: optind can be changed by ":next" and ":rewind" commands
                optind++;
-               if (!argv[optind])
+               if (optind >= cmdline_filecnt)
                        break;
        }
        // "Use normal screen buffer, restore cursor"