diff -urp includes/content.node_form.inc includes/content.node_form.inc
--- includes/content.node_form.inc	2008-10-04 16:14:21.000000000 +0300
+++ includes/content.node_form.inc	2008-11-18 11:11:24.000000000 +0200
@@ -51,14 +51,6 @@ function content_field_form(&$form, &$fo
       $access = FALSE;
     }
   }
-  if (!$access) {
-    $addition[$field_name] = array(
-      '#access' => $access,
-      '#type' => 'value',
-      '#value' => $node->$field_name,
-      );
-    return $addition;
-  }
 
   // TODO: is the "if (function_exists($function)) {" needed ?
   // defining the $function here makes it unclear where it is actually called
@@ -88,6 +80,15 @@ function content_field_form(&$form, &$fo
         $callback = content_callback('widget', 'default value', $field) == CONTENT_CALLBACK_CUSTOM ? $field['widget']['module'] .'_default_value' : 'content_default_value';
         if (function_exists($callback)) {
           $items = $callback($form, $form_state, $field, 0);
+          // If there is no access then set the default value.
+          if (!$access) {
+            $addition[$field_name] = array(
+              '#access' => $access,
+              '#type' => 'value',
+              '#value' => $items,
+            );
+            return $addition;
+          }
         }
       }
     }
