﻿### Eclipse Workspace Patch 1.0
#P drupal-HEAD
Index: modules/menu/menu.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/menu/menu.admin.inc,v
retrieving revision 1.68
diff -u -r1.68 menu.admin.inc
--- modules/menu/menu.admin.inc	4 Nov 2009 04:43:58 -0000	1.68
+++ modules/menu/menu.admin.inc	7 Nov 2009 07:44:00 -0000
@@ -266,7 +266,7 @@
 
   $path = $item['link_path'];
   if (isset($item['options']['query'])) {
-    $path .= '?' . $item['options']['query'];
+    $path .= '?' . http_build_query($item['options']['query']);
   }
   if (isset($item['options']['fragment'])) {
     $path .= '#' . $item['options']['fragment'];
@@ -346,22 +346,22 @@
  */
 function menu_edit_item_validate($form, &$form_state) {
   $item = &$form_state['values']['menu'];
-  $normal_path = drupal_get_normal_path($item['link_path']);
-  if ($item['link_path'] != $normal_path) {
-    drupal_set_message(t('The menu system stores system paths only, but will use the URL alias for display. %link_path has been stored as %normal_path', array('%link_path' => $item['link_path'], '%normal_path' => $normal_path)));
-    $item['link_path'] = $normal_path;
-  }
   if (!url_is_external($item['link_path'])) {
-    $parsed_link = parse_url($item['link_path']);
-    if (isset($parsed_link['query'])) {
-      $item['options']['query'] = $parsed_link['query'];
-    }
-    if (isset($parsed_link['fragment'])) {
-      $item['options']['fragment'] = $parsed_link['fragment'];
+    $normal_path = drupal_get_normal_path($item['link_path']);
+    if ($item['link_path'] != $normal_path) {
+      drupal_set_message(t('The menu system stores system paths only, but will use the URL alias for display. %link_path has been stored as %normal_path', array('%link_path' => $item['link_path'], '%normal_path' => $normal_path)));
+      $item['link_path'] = $normal_path;
     }
+    $parsed_link = drupal_parse_url($item['link_path']);
     if ($item['link_path'] != $parsed_link['path']) {
       $item['link_path'] = $parsed_link['path'];
     }
+    if (!empty($parsed_link['query'])) {
+      $item['options']['query'] = $parsed_link['query'];
+    }
+    if (!empty($parsed_link['fragment'])) {
+      $item['options']['fragment'] = $parsed_link['fragment'];
+    }
   }
   if (!trim($item['link_path']) || !menu_valid_path($item)) {
     form_set_error('link_path', t("The path '@link_path' is either invalid or you do not have access to it.", array('@link_path' => $item['link_path'])));
