Index: update.php
===================================================================
RCS file: /cvs/drupal/drupal/update.php,v
retrieving revision 1.247
diff -u -p -r1.247 update.php
--- update.php	7 Jan 2008 19:43:28 -0000	1.247
+++ update.php	11 Jan 2008 02:20:54 -0000
@@ -158,9 +158,11 @@ function update_do_one($module, $number,
   if (!isset($context['results'][$module][$number])) {
     $context['results'][$module][$number] = array();
   }
-  $context['results'][$module][$number] = array_merge($context['results'][$module][$number], $ret);;
-
-  if ($context['finished'] == 1) {
+  $context['results'][$module][$number] = array_merge($context['results'][$module][$number], $ret);
+  // To abort the update so the schema version is not incremented, and also display
+  // a message, an update function should return an array with a value like:
+  // $ret['cannot update'] = array('success' => FALSE, 'query' => "Why I failed")
+  if ($context['finished'] == 1 && empty($ret['cannot update'])) {
     // Update the installed version
     drupal_set_installed_schema_version($module, $number);
   }
