]> git.eshelyaron.com Git - emacs.git/commitdiff
* xmenu.c (set_frame_menubar): Use int, not EMACS_UINT, for indexes
authorPaul Eggert <eggert@cs.ucla.edu>
Thu, 12 May 2011 16:16:40 +0000 (09:16 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Thu, 12 May 2011 16:16:40 +0000 (09:16 -0700)
that always fit in int.  Use a sentinel instead of a counter, to
avoid a temp and to allay GCC's concerns about possible int overflow.

src/ChangeLog
src/xmenu.c

index 913dcc05a10ea0b5f7922ee5e6b1a37fc8f091bb..3bdf5129da9340972a0222ac2707e3f061d26dc1 100644 (file)
@@ -1,5 +1,9 @@
 2011-05-12  Paul Eggert  <eggert@cs.ucla.edu>
 
+       * xmenu.c (set_frame_menubar): Use int, not EMACS_UINT, for indexes
+       that always fit in int.  Use a sentinel instead of a counter, to
+       avoid a temp and to allay GCC's concerns about possible int overflow.
+
        * menu.c (grow_menu_items): Check for int overflow.
 
        * xmenu.c (set_frame_menubar): Don't mishandle vectors with no nils.
index 898aade06c21161ff975087f7daf93a86ab6f05d..ccb60d2dcbbdf7f6952ad2ba22db0c294f54001e 100644 (file)
@@ -922,7 +922,7 @@ set_frame_menubar (FRAME_PTR f, int first_time, int deep_p)
 #endif
   Lisp_Object items;
   widget_value *wv, *first_wv, *prev_wv = 0;
-  EMACS_UINT i, last_i;
+  int i;
   int *submenu_start, *submenu_end;
   int *submenu_top_level_items, *submenu_n_panes;
 
@@ -966,7 +966,7 @@ set_frame_menubar (FRAME_PTR f, int first_time, int deep_p)
       Lisp_Object *previous_items
        = (Lisp_Object *) alloca (previous_menu_items_used
                                  * sizeof (Lisp_Object));
-      EMACS_UINT subitems;
+      int subitems;
 
       /* If we are making a new widget, its contents are empty,
         do always reinitialize them.  */
@@ -1012,7 +1012,7 @@ set_frame_menubar (FRAME_PTR f, int first_time, int deep_p)
       menu_items = f->menu_bar_vector;
       menu_items_allocated = VECTORP (menu_items) ? ASIZE (menu_items) : 0;
       subitems = ASIZE (items) / 4;
-      submenu_start = (int *) alloca (subitems * sizeof (int));
+      submenu_start = (int *) alloca ((subitems + 1) * sizeof (int));
       submenu_end = (int *) alloca (subitems * sizeof (int));
       submenu_n_panes = (int *) alloca (subitems * sizeof (int));
       submenu_top_level_items = (int *) alloca (subitems * sizeof (int));
@@ -1037,7 +1037,7 @@ set_frame_menubar (FRAME_PTR f, int first_time, int deep_p)
          submenu_end[i] = menu_items_used;
        }
 
-      last_i = i;
+      submenu_start[i] = -1;
       finish_menu_items ();
 
       /* Convert menu_items into widget_value trees
@@ -1051,7 +1051,7 @@ set_frame_menubar (FRAME_PTR f, int first_time, int deep_p)
       wv->help = Qnil;
       first_wv = wv;
 
-      for (i = 0; i < last_i; i++)
+      for (i = 0; 0 <= submenu_start[i]; i++)
        {
          menu_items_n_panes = submenu_n_panes[i];
          wv = digest_single_submenu (submenu_start[i], submenu_end[i],