]> git.eshelyaron.com Git - emacs.git/commitdiff
(menu_bar_items): When moving an item to the end,
authorRichard M. Stallman <rms@gnu.org>
Wed, 2 Mar 1994 22:51:20 +0000 (22:51 +0000)
committerRichard M. Stallman <rms@gnu.org>
Wed, 2 Mar 1994 22:51:20 +0000 (22:51 +0000)
shift all the following ones forward one slot.

src/keyboard.c

index fc9ce849e00c071da09ec3ff0a4b21b02afcf5a2..1ea938c654f6ad4fd97a010163e26643c255672a 100644 (file)
@@ -3558,17 +3558,20 @@ menu_bar_items (old)
       for (i = 0; i < end; i += 3)
        if (EQ (XCONS (tail)->car, XVECTOR (menu_bar_items_vector)->contents[i]))
          {
-           Lisp_Object tem;
-           end -= 3;
-#define EXCH(a, b) tem = a, a = b, b = tem
-           EXCH (XVECTOR (menu_bar_items_vector)->contents[i],
-                 XVECTOR (menu_bar_items_vector)->contents[end]);
-           EXCH (XVECTOR (menu_bar_items_vector)->contents[i + 1],
-                 XVECTOR (menu_bar_items_vector)->contents[end + 1]);
-           EXCH (XVECTOR (menu_bar_items_vector)->contents[i + 2],
-                 XVECTOR (menu_bar_items_vector)->contents[end + 2]);
-#undef EXCH
-           i -= 3;
+           Lisp_Object tem0, tem1, tem2;
+           /* Move the item at index I to the end,
+              shifting all the others forward.  */
+           tem0 = XVECTOR (menu_bar_items_vector)->contents[i + 0];
+           tem1 = XVECTOR (menu_bar_items_vector)->contents[i + 1];
+           tem2 = XVECTOR (menu_bar_items_vector)->contents[i + 2];
+           if (end > i + 3)
+             bcopy (&XVECTOR (menu_bar_items_vector)->contents[i + 3],
+                    &XVECTOR (menu_bar_items_vector)->contents[i],
+                    (end - i - 3) * sizeof (Lisp_Object));
+           XVECTOR (menu_bar_items_vector)->contents[end - 3] = tem0;
+           XVECTOR (menu_bar_items_vector)->contents[end - 2] = tem1;
+           XVECTOR (menu_bar_items_vector)->contents[end - 1] = tem2;
+           break;
          }
     }