# HG changeset patch # User Richard M. Stallman # Date 762648680 0 # Node ID 78275962ef1ef1cf6845a762b5e128c061cc8212 # Parent 6b81b25750712a683400b9252e8b5ea695a6472b (menu_bar_items): When moving an item to the end, shift all the following ones forward one slot. diff -r 6b81b2575071 -r 78275962ef1e src/keyboard.c --- a/src/keyboard.c Wed Mar 02 22:50:31 1994 +0000 +++ b/src/keyboard.c Wed Mar 02 22:51:20 1994 +0000 @@ -3558,17 +3558,20 @@ 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; } }