git-add--interactive: Improve behavior on bogus input
authorJean-Luc Herren <jlh@gmx.ch>
Wed, 26 Sep 2007 14:05:01 +0000 (16:05 +0200)
committerJunio C Hamano <gitster@pobox.com>
Sun, 30 Sep 2007 06:14:17 +0000 (23:14 -0700)
1) Previously, any menu would cause a perl error when entered '0',
   which is never a valid option.

2) Entering a bogus choice (like 998 or 4-2) surprisingly caused
   the same behavior as if the user had just hit 'enter', which
   means to carry out the selected action on the selected items.
   Entering such bogus input is now a no-op and the sub-menu
   doesn't exit.

Signed-off-by: Jean-Luc Herren <jlh@gmx.ch>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
git-add--interactive.perl

index f9e9f0239295c813be26392fe1299c7fc36ee004..be6881496c88fcffc52031e482bfdd8d03faa66c 100755 (executable)
@@ -219,7 +219,7 @@ sub list_and_choose {
                        last;
                }
                chomp $line;
-               my $donesomething = 0;
+               last if $line eq '';
                for my $choice (split(/[\s,]+/, $line)) {
                        my $choose = 1;
                        my ($bottom, $top);
@@ -251,12 +251,11 @@ sub list_and_choose {
                                next TOPLOOP;
                        }
                        for ($i = $bottom-1; $i <= $top-1; $i++) {
-                               next if (@stuff <= $i);
+                               next if (@stuff <= $i || $i < 0);
                                $chosen[$i] = $choose;
-                               $donesomething++;
                        }
                }
-               last if (!$donesomething || $opts->{IMMEDIATE});
+               last if ($opts->{IMMEDIATE});
        }
        for ($i = 0; $i < @stuff; $i++) {
                if ($chosen[$i]) {