Index: modules/file/file.field.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/file/file.field.inc,v
retrieving revision 1.18
diff -u -p -r1.18 file.field.inc
--- modules/file/file.field.inc	26 Jan 2010 08:29:25 -0000	1.18
+++ modules/file/file.field.inc	2 Feb 2010 20:46:12 -0000
@@ -242,6 +242,22 @@ function file_field_prepare_view($obj_ty
 }
 
 /**
+ * Implements hook_field_presave().
+ */
+function file_field_presave($obj_type, $object, $field, $instance, $langcode, &$items) {
+  // Make sure that each file which will be saved with this object has a
+  // permanent status, so that it will not be removed when temporary files are
+  // cleaned up.
+  foreach ($items as $item) {
+    $file = file_load($item['fid']);
+    if (($file->status & FILE_STATUS_PERMANENT) == 0) {
+      $file->status |= FILE_STATUS_PERMANENT;
+      file_save($file);
+    }
+  }
+}
+
+/**
  * Implements hook_field_update().
  *
  * Check for files that have been removed from the object.
Index: modules/image/image.field.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/image/image.field.inc,v
retrieving revision 1.12
diff -u -p -r1.12 image.field.inc
--- modules/image/image.field.inc	30 Jan 2010 07:59:25 -0000	1.12
+++ modules/image/image.field.inc	2 Feb 2010 20:46:12 -0000
@@ -226,6 +226,13 @@ function image_field_prepare_view($obj_t
 }
 
 /**
+ * Implements hook_field_presave().
+ */
+function image_field_presave($obj_type, $object, $field, $instance, $langcode, &$items) {
+  file_field_presave($obj_type, $object, $field, $instance, $langcode, $items);
+}
+
+/**
  * Implements hook_field_insert().
  */
 function image_field_insert($obj_type, $object, $field, $instance, $langcode, &$items) {
