bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#8839: [PATCH] uses of XVECTOR in nsmenu.m in v23 need to be changed


From: Alp Aker
Subject: bug#8839: [PATCH] uses of XVECTOR in nsmenu.m in v23 need to be changed
Date: Sun, 12 Jun 2011 01:26:32 +0000 (UTC)
User-agent: Loom/3.14 (http://gmane.org/)

Uses of XVECTOR in nsmenu.m were recently removed in the trunk (by Paul Eggert, 
rev. no. 104024).  The same changes also need to made to nsmenu.m in the 
emacs-23 branch in order to build on Nextstep.  The following patch does what's 
necessary.

=== modified file 'src/ChangeLog'
--- a/src/ChangeLog     2011-06-02 16:56:04 +0000
+++ b/src/ChangeLog     2011-06-12 01:05:36 +0000
@@ -1,3 +1,8 @@
+2011-06-11  Alp Aker  <address@hidden>
+
+       * nsmenu.m (ns_update_menubar, ns_menu_show): Replace uses of
+       XVECTOR with ASIZE and AREF.
+
 2011-06-02  Dan Nicolaescu  <address@hidden>
 
        * emacs.c (main): Warn when starting a GTK emacs in daemon mode.

=== modified file 'src/nsmenu.m'
--- a/src/nsmenu.m      2011-01-02 23:50:46 +0000
+++ b/src/nsmenu.m      2011-06-12 00:33:14 +0000
@@ -219,7 +219,7 @@
 
       /* Save the frame's previous menu bar contents data */
       if (previous_menu_items_used)
-       bcopy (XVECTOR (f->menu_bar_vector)->contents, previous_items,
+       memcpy (previous_items, &AREF (f->menu_bar_vector, 0),
               previous_menu_items_used * sizeof (Lisp_Object));
 
       /* parse stage 1: extract from lisp */
@@ -227,19 +227,19 @@
 
       menu_items = f->menu_bar_vector;
       menu_items_allocated = VECTORP (menu_items) ? ASIZE (menu_items) : 0;
-      submenu_start = (int *) alloca (XVECTOR (items)->size * sizeof (int *));
-      submenu_end = (int *) alloca (XVECTOR (items)->size * sizeof (int *));
-      submenu_n_panes = (int *) alloca (XVECTOR (items)->size * sizeof (int));
+      submenu_start = (int *) alloca (ASIZE (items) * sizeof (int *));
+      submenu_end = (int *) alloca (ASIZE (items) * sizeof (int *));
+      submenu_n_panes = (int *) alloca (ASIZE (items) * sizeof (int));
       submenu_top_level_items
-       = (int *) alloca (XVECTOR (items)->size * sizeof (int *));
+       = (int *) alloca (ASIZE (items) * sizeof (int *));
       init_menu_items ();
-      for (i = 0; i < XVECTOR (items)->size; i += 4)
+      for (i = 0; i < ASIZE (items); i += 4)
        {
          Lisp_Object key, string, maps;
 
-         key = XVECTOR (items)->contents[i];
-         string = XVECTOR (items)->contents[i + 1];
-         maps = XVECTOR (items)->contents[i + 2];
+         key = AREF (items, i);
+         string = AREF (items, i + 1);
+         maps = AREF (items, i + 2);
          if (NILP (string))
            break;
 
@@ -312,11 +312,11 @@
             /* FIXME: this ALWAYS fails on Buffers menu items.. something
                  about their strings causes them to change every time, so we
                  double-check failures */
-            if (!EQ (previous_items[i], XVECTOR (menu_items)->contents[i]))
+            if (!EQ (previous_items[i], AREF (menu_items, i)))
               if (!(STRINGP (previous_items[i])
-                    && STRINGP (XVECTOR (menu_items)->contents[i])
+                    && STRINGP (AREF (menu_items, i))
                     && !strcmp (SDATA (previous_items[i]),
-                               SDATA (XVECTOR (menu_items)->contents[i]))))
+                               SDATA (AREF (menu_items, i)))))
                   break;
           if (i == previous_menu_items_used)
             {
@@ -347,10 +347,10 @@
       /* Parse stage 2a: now GC cannot happen during the lifetime of the
          widget_value, so it's safe to store data from a Lisp_String */
       wv = first_wv->contents;
-      for (i = 0; i < XVECTOR (items)->size; i += 4)
+      for (i = 0; i < ASIZE (items); i += 4)
        {
          Lisp_Object string;
-         string = XVECTOR (items)->contents[i + 1];
+         string = AREF (items, i + 1);
          if (NILP (string))
            break;
 /*           if (submenu && strcmp (submenuTitle, SDATA (string)))
@@ -408,7 +408,7 @@
 
 
       /* check if no change.. this mechanism is a bit rough, but ready */
-      n = XVECTOR (items)->size / 4;
+      n = ASIZE (items) / 4;
       if (f == last_f && n_previous_strings == n)
         {
           for (i = 0; i<n; i++)
@@ -435,9 +435,9 @@
         }
 
       [menu clear];
-      for (i = 0; i < XVECTOR (items)->size; i += 4)
+      for (i = 0; i < ASIZE (items); i += 4)
        {
-         string = XVECTOR (items)->contents[i + 1];
+         string = AREF (items, i + 1);
          if (NILP (string))
            break;
 
@@ -809,7 +809,7 @@
   i = 0;
   while (i < menu_items_used)
     {
-      if (EQ (XVECTOR (menu_items)->contents[i], Qnil))
+      if (EQ (AREF (menu_items, i), Qnil))
        {
          submenu_stack[submenu_depth++] = save_wv;
          save_wv = prev_wv;
@@ -817,21 +817,21 @@
          first_pane = 1;
          i++;
        }
-      else if (EQ (XVECTOR (menu_items)->contents[i], Qlambda))
+      else if (EQ (AREF (menu_items, i), Qlambda))
        {
          prev_wv = save_wv;
          save_wv = submenu_stack[--submenu_depth];
          first_pane = 0;
          i++;
        }
-      else if (EQ (XVECTOR (menu_items)->contents[i], Qt)
+      else if (EQ (AREF (menu_items, i), Qt)
               && submenu_depth != 0)
        i += MENU_ITEMS_PANE_LENGTH;
       /* Ignore a nil in the item list.
         It's meaningful only for dialog boxes.  */
-      else if (EQ (XVECTOR (menu_items)->contents[i], Qquote))
+      else if (EQ (AREF (menu_items, i), Qquote))
        i += 1;
-      else if (EQ (XVECTOR (menu_items)->contents[i], Qt))
+      else if (EQ (AREF (menu_items, i), Qt))
        {
          /* Create a new pane.  */
          Lisp_Object pane_name, prefix;
@@ -921,7 +921,7 @@
             make the call_data null so that it won't display a box
             when the mouse is on it.  */
          wv->call_data
-             = !NILP (def) ? (void *) &XVECTOR (menu_items)->contents[i] : 0;
+             = !NILP (def) ? (void *) &AREF (menu_items, i) : 0;
          wv->enabled = !NILP (enable);
 
          if (NILP (type))







reply via email to

[Prev in Thread] Current Thread [Next in Thread]