--- uc_optional_checkout_review-5.x-1.0.module	2008-06-02 21:06:11.000000000 -0700
+++ uc_optional_checkout_review.module	2008-12-18 15:21:00.000000000 -0800
@@ -13,21 +13,44 @@
 
 
 /**
+ * Implementation of hook_submit
+ *
+ * Make sure checkout validates properly before skipping checkout review.
+ */
+function uc_optional_checkout_review_form_submit($form_id, $form_values) {
+
+	$url = uc_cart_checkout_form_submit($form_id, $form_values);		
+	if ($url == 'cart/checkout/review') {
+		return uc_cart_checkout_review_form_submit($form_id, $form_values);
+	}
+	else if ($url == 'cart/checkout') {
+		return $url;
+	}
+	else {
+		watchdog('debug', t('Checkout returned unexpected destination url: ' . $url));
+		return $url;
+	}
+}
+
+
+/**
  * Implementation of hook_form_alter
  * 
  * Replace review order button with submit order button and make it run the review form submit function.
  * Add "Skip checkout review" option to checkout settings form.
  */
 function uc_optional_checkout_review_form_alter($form_id, &$form) {
+
   switch ($form_id) {
     case 'uc_cart_checkout_form':
-      if (variable_get('uc_checkout_skip_review', FALSE)) {
+      if (variable_get('uc_checkout_skip_review', TRUE)) {
         unset($form['continue']);
+
         $form['submit'] = array(
           '#type' => 'submit',
           '#value' => variable_get('uc_checkout_submit_button', t('Submit order')),
         );
-        $form['#submit'] += array('uc_cart_checkout_review_form_submit' => array());
+        $form['#submit'] = array('uc_optional_checkout_review_form_submit' => array());
       }
       break;
    
@@ -39,6 +62,4 @@ function uc_optional_checkout_review_for
       );
       break;
   }
-}
-
-
+}
\ No newline at end of file

