diff --git a/modules/file/file.field.inc b/modules/file/file.field.inc index d592381..da3a73f 100644 --- a/modules/file/file.field.inc +++ b/modules/file/file.field.inc @@ -312,9 +312,19 @@ function file_field_update($entity_type, $entity, $field, $instance, $langcode, function file_field_delete($entity_type, $entity, $field, $instance, $langcode, &$items) { list($id, $vid, $bundle) = entity_extract_ids($entity_type, $entity); - // Delete all file usages within this entity. - foreach ($items as $delta => $item) { - file_field_delete_file($item, $field, $entity_type, $id, 0); + // This hook is not invoked for each revision of the entity so this ensures + // that file_usage is removed for non-current revisions. + if ($fids = db_select('file_usage') + ->fields('file_usage',array('fid')) + ->condition('id', $id) + ->condition('module', 'file') + ->condition('type', $entity_type) + ->execute()->fetchCol()){ + $files = file_load_multiple($fids); + foreach ($files as $file) { + file_usage_delete($file, 'file', $entity_type, $id, 0); + file_delete($file); + } } }