Index: admin_menu.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/admin_menu/admin_menu.inc,v
retrieving revision 1.11.2.19
diff -u -p -r1.11.2.19 admin_menu.inc
--- admin_menu.inc	3 Dec 2008 22:53:31 -0000	1.11.2.19
+++ admin_menu.inc	27 Dec 2008 19:04:54 -0000
@@ -105,23 +105,23 @@ function admin_menu_link_save($item) {
  *   If one of these links is added back, it should be removed from the array.
  */
 function admin_menu_admin_menu(&$deleted) {
-  global $base_url;
-
   $links = array();
   $icon_path = '<front>';
 
-  // Add system update links.
+  // Add link to manually run cron.
   $links[] = array(
     'title' => 'Run cron',
     'path' => 'admin/reports/status/run-cron',
     'weight' => 50,
     'parent_path' => $icon_path,
   );
+  // Add link to run update.php.
   $links[] = array(
     'title' => 'Run updates',
-    'path' => $base_url .'/update.php',
+    'path' => 'update.php',
     'weight' => 50,
     'parent_path' => $icon_path,
+    'options' => array('external' => TRUE),
   );
 
   // Move 'By module' item into Site configuration.
@@ -281,7 +281,7 @@ function admin_menu_admin_menu(&$deleted
  *   An array of links that were removed from $menu_links.
  */
 function admin_menu_adjust_items(&$menu_links, &$sort) {
-  global $user, $base_url;
+  global $user;
   $links = array();
   $deleted = array();
 
Index: admin_menu.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/admin_menu/admin_menu.module,v
retrieving revision 1.43.2.15
diff -u -p -r1.43.2.15 admin_menu.module
--- admin_menu.module	17 Dec 2008 09:10:15 -0000	1.43.2.15
+++ admin_menu.module	27 Dec 2008 19:10:53 -0000
@@ -266,12 +266,16 @@ function admin_menu_translated_menu_link
       _menu_item_localize($item, $map, TRUE);
     }
   }
-  // Don't waste cycles altering items that are not visible
-  if (!$item['access']) {
+  // We defined 'Run updates' as external link; apply proper base path now.
+  if ($item['link_path'] == 'update.php') {
+    $item['title'] = $item['link_title'];
+    $item['access'] = ($user->uid == 1 || !empty($GLOBALS['update_free_access']));
+    $item['href'] = base_path() . $item['href'];
+    _menu_item_localize($item, $map, TRUE);
     return;
   }
-  if ($item['link_path'] == $base_url . '/update.php' && $user->uid != 1) {
-    $item['access'] = FALSE;
+  // Don't waste cycles altering items that are not visible
+  if (!$item['access']) {
     return;
   }
   if ($item['link_path'] == 'http://drupal.org' && !user_access('display drupal links')) {
@@ -289,7 +293,7 @@ function admin_menu_translated_menu_link
   }
   // Handle items that need dynamic localization/replacement.
   if (isset($item['options']['t'])) {
-    $item['title'] = t($item['title'], $item['options']['t'] + array('@username' => $GLOBALS['user']->name));
+    $item['title'] = t($item['title'], $item['options']['t'] + array('@username' => $user->name));
   }
   if ($item['title'] == 'icon_users') {
     // Add count of active anonymous/authenticated users.
