Index: includes/menu.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/menu.inc,v
retrieving revision 1.317
diff -u -p -r1.317 menu.inc
--- includes/menu.inc	2 Apr 2009 03:40:05 -0000	1.317
+++ includes/menu.inc	5 Apr 2009 12:52:05 -0000
@@ -2184,10 +2184,10 @@ function menu_link_save(&$item) {
   }
   // If every value in $existing_item is the same in the $item, there is no
   // reason to run the update queries or clear the caches. We use
-  // array_diff_assoc() with the $existing_item as the first parameter
-  // because $item has additional keys left over from the process of building
-  // the router item.
-  if (!$existing_item || array_diff_assoc($existing_item, $item)) {
+  // array_intersect_assoc() with the $item as the first parameter because
+  // $item may have additional keys left over from building a router entry.
+  // The intesect removes the extra keys, allowing a meaningful comparison.
+  if (!$existing_item || (array_intersect_assoc($item, $existing_item)) != $existing_item) {
     db_update('menu_links')
       ->fields(array(
         'menu_name' => $item['menu_name'],
