complex menu: Fixed bug in menu.c so complex.c32 works again.
authorMurali Ganapathy <murali@integral.(none)>
Mon, 23 Jun 2008 06:04:11 +0000 (23:04 -0700)
committerH. Peter Anvin <hpa@zytor.com>
Tue, 24 Jun 2008 06:16:32 +0000 (23:16 -0700)
Avoid crashing in the presence of unnamed submenus.

menu/libmenu/menu.c

index 841e59c..56a7426 100644 (file)
@@ -695,10 +695,11 @@ void fix_submenus()
      for (j=0; j < m->numitems; j++)
      {
          mi = m->items[j];
-         // if submenu with non-trivial data string
-         // again using hack that itemdata is a union data type
-         if ( mi->data && ((mi->action == OPT_SUBMENU) || (mi->action == OPT_RADIOMENU)) )
+         // if item is a submenu and has non-empty non-trivial data string
+         if (mi->data && strlen(mi->data) > 0 &&
+             ((mi->action == OPT_SUBMENU) || (mi->action == OPT_RADIOMENU)) ) {
             mi->itemdata.submenunum = find_menu_num (mi->data);
+         }
      }
   }
 }