Index: content.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/cck/content.module,v
retrieving revision 1.90.2.36
diff -u -r1.90.2.36 content.module
--- content.module	29 Jan 2007 16:03:43 -0000	1.90.2.36
+++ content.module	13 Feb 2007 14:10:12 -0000
@@ -187,11 +187,12 @@
  * Both widgets and fields have a chance to raise error flags when a node is
  * being validated.
  */
-function content_validate(&$node) {
+function content_validate(&$node, &$form) {
   _content_widget_invoke('validate', $node);
   _content_widget_invoke('process form values', $node);
   _content_field_invoke('validate', $node);
   _content_field_invoke_default('validate', $node);
+  _content_validate_save_field_values($node, $form);
 }
 
 /**
@@ -203,7 +204,6 @@
  */
 function content_submit(&$node) {
   _content_widget_invoke('submit', $node);
-  _content_widget_invoke('process form values', $node);
   _content_field_invoke('submit', $node);
   _content_field_invoke_default('submit', $node);
 }
@@ -261,9 +261,6 @@
  * Generate field render arrays.
  */
 function content_view(&$node, $teaser = FALSE, $page = FALSE) {
-  if ($node->in_preview) {
-    _content_widget_invoke('process form values', $node);
-  }
   $content = _content_field_view($node, $teaser, $page);
   $node->content = array_merge((array) $node->content, $content);
 }
@@ -274,13 +271,13 @@
  * When a revision is deleted, make sure the appropriate cache item is cleared.
  * @todo: deprecate op==validate & op==submit in favor of form callbacks.
  */
-function content_nodeapi(&$node, $op, $teaser, $page) {
+function content_nodeapi(&$node, $op, $a3, $a4) {
   switch ($op) {
     case 'load':
       return content_load($node);
 
     case 'validate':
-      content_validate($node);
+      content_validate($node, $a3);
       break;
 
     case 'submit':
@@ -304,7 +301,7 @@
       break;
 
     case 'view':
-      content_view($node, $teaser, $page);
+      content_view($node, $a3, $a4);
       break;
   }
 }
@@ -1098,3 +1095,19 @@
 
   return (array) $default_value;
 }
+
+/*
+ * Saves possible modified field values during validation
+ */
+function _content_validate_save_field_values(&$node, &$form) {
+  $type = content_types($node->type);
+  $widget_types = _content_widget_types();
+
+  if (count($type['fields'])) {
+    foreach ($type['fields'] as $field) {
+      if (isset($node->$field['field_name'])) {
+        form_set_value($form[$field['field_name']], $node->$field['field_name']);
+      }
+    }
+  }
+}
Index: fieldgroup.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/cck/fieldgroup.module,v
retrieving revision 1.1.4.24
diff -u -r1.1.4.24 fieldgroup.module
--- fieldgroup.module	8 Feb 2007 14:05:41 -0000	1.1.4.24
+++ fieldgroup.module	13 Feb 2007 14:10:12 -0000
@@ -302,7 +302,7 @@
       foreach ($group['fields'] as $field_name => $field) {
         if (isset($form[$field_name])) {
           $form[$group_name][$field_name] = $form[$field_name];
-          unset($form[$field_name]);
+          $form[$field_name] = NULL;
         }
       }
       if (!empty($group['fields']) && !element_children($form[$group_name])) {
