From: Richard M. Stallman Date: Wed, 2 Mar 1994 22:51:20 +0000 (+0000) Subject: (menu_bar_items): When moving an item to the end, X-Git-Tag: emacs-19.34~9693 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=0301268e2ba6a1ce8ddf77473e74d1aea856427b;p=emacs.git (menu_bar_items): When moving an item to the end, shift all the following ones forward one slot. --- diff --git a/src/keyboard.c b/src/keyboard.c index fc9ce849e00..1ea938c654f 100644 --- a/src/keyboard.c +++ b/src/keyboard.c @@ -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; } }