Index: includes/form.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/form.inc,v
retrieving revision 1.128
diff -u -r1.128 form.inc
--- includes/form.inc	5 Jul 2006 11:45:51 -0000	1.128
+++ includes/form.inc	18 Jul 2006 03:36:07 -0000
@@ -58,7 +58,7 @@
  *   An optional callback that will be used in addition to the form_id.
  *
  */
-function drupal_get_form($form_id, &$form, $callback = NULL) {
+function drupal_get_form($form_id, &$form, $callback = NULL, $render = TRUE) {
   global $form_values, $form_submitted, $user, $form_button_counter;
   static $saved_globals = array();
 
@@ -145,28 +145,15 @@
     }
   }
 
-  // Don't override #theme if someone already set it.
-  if (!isset($form['#theme'])) {
-    if (theme_get_function($form_id)) {
-      $form['#theme'] = $form_id;
-    }
-    elseif (theme_get_function($callback)) {
-      $form['#theme'] = $callback;
-    }
+  if ($render) {
+    $output = drupal_render_form($form_id, $form, $callback);
+    list($form_values, $form_submitted, $form_button_counter) = array_pop($saved_globals);
+    return $output;
   }
-
-  if (isset($form['#pre_render'])) {
-    foreach ($form['#pre_render'] as $function) {
-      if (function_exists($function)) {
-        $function($form_id, $form);
-      }
-    }
+  else {
+    list($form_values, $form_submitted, $form_button_counter) = array_pop($saved_globals);
+    return $form;
   }
-
-  $output = form_render($form);
-  // Restore globals
-  list($form_values, $form_submitted, $form_button_counter) = array_pop($saved_globals);
-  return $output;
 }
 
 function drupal_validate_form($form_id, $form, $callback = NULL) {
@@ -207,6 +194,29 @@
   return $goto;
 }
 
+function drupal_render_form($form_id, &$form, $callback = NULL) {
+  // Don't override #theme if someone already set it.
+  if (!isset($form['#theme'])) {
+    if (theme_get_function($form_id)) {
+      $form['#theme'] = $form_id;
+    }
+    elseif (theme_get_function($callback)) {
+      $form['#theme'] = $callback;
+    }
+  }
+
+  if (isset($form['#pre_render'])) {
+    foreach ($form['#pre_render'] as $function) {
+      if (function_exists($function)) {
+        $function($form_id, $form);
+      }
+    }
+  }
+
+  $output = form_render($form);
+  return $output;
+}
+
 function _form_validate($elements, $form_id = NULL) {
   // Recurse through all children.
   foreach (element_children($elements) as $key) {
