]> git.ipfire.org Git - thirdparty/newt.git/commitdiff
don't crash or hang when form has no focusable elements
authorMiroslav Lichvar <mlichvar@redhat.com>
Wed, 9 Jul 2008 14:06:17 +0000 (16:06 +0200)
committerMiroslav Lichvar <mlichvar@redhat.com>
Wed, 9 Jul 2008 14:06:17 +0000 (16:06 +0200)
form.c

diff --git a/form.c b/form.c
index 765e8e35ed832962080fc1cf4b50ddac7d34b20e..fefa5c0a9f07fd8776f0bfa41456d1950679998a 100644 (file)
--- a/form.c
+++ b/form.c
@@ -744,8 +744,9 @@ static struct eventResult formEvent(newtComponent co, struct event ev) {
            else if (new >= form->numComps)
                new = (form->numComps - 1);
 
-           while (!form->elements[new].co->takesFocus)
-               new = new - dir;
+           while (!form->elements[new].co->takesFocus &&
+                   new - dir >= 0 && new - dir < form->numComps)
+               new -= dir;
        } else {
            do {
                new += dir;
@@ -755,6 +756,9 @@ static struct eventResult formEvent(newtComponent co, struct event ev) {
                        new = form->numComps - 1;
                    else if (new >= form->numComps)
                        new = 0;
+                   if (new == form->currComp)
+                       /* back where we started */
+                       return er;
                } else if (new < 0 || new >= form->numComps)
                    return er;
            } while (!form->elements[new].co->takesFocus);