Index: includes/form.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/form.inc,v
retrieving revision 1.396
diff -u -p -r1.396 form.inc
--- includes/form.inc	8 Nov 2009 19:53:19 -0000	1.396
+++ includes/form.inc	9 Nov 2009 21:20:00 -0000
@@ -662,19 +662,14 @@ function drupal_prepare_form($form_id, &
   }
 
   $form += element_info('form');
-  $form += array('#tree' => FALSE, '#parents' => array());
+  $form += array('#tree' => FALSE, '#parents' => array(), '#validate' => array(), '#submit' => array());
 
-  if (!isset($form['#validate'])) {
-    if (function_exists($form_id . '_validate')) {
-      $form['#validate'] = array($form_id . '_validate');
-    }
+  // Add default validate and submit handlers if they exist.
+  if (function_exists($form_id . '_validate')) {
+    $form['#validate'][] = $form_id . '_validate';
   }
-
-  if (!isset($form['#submit'])) {
-    if (function_exists($form_id . '_submit')) {
-      // We set submit here so that it can be altered.
-      $form['#submit'] = array($form_id . '_submit');
-    }
+  if (function_exists($form_id . '_submit')) {
+    $form['#submit'][] = $form_id . '_submit';
   }
 
   // Invoke hook_form_FORM_ID_alter() implementations.
