Index: modules/field/field.crud.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/field/field.crud.inc,v
retrieving revision 1.71
diff -u -p -r1.71 field.crud.inc
--- modules/field/field.crud.inc	29 Sep 2010 01:37:02 -0000	1.71
+++ modules/field/field.crud.inc	18 Oct 2010 21:26:32 -0000
@@ -583,11 +583,11 @@ function field_read_fields($params = arr
  */
 function field_delete_field($field_name) {
   // Delete all non-deleted instances.
-  $field = field_info_field($field_name);
+  $field = field_read_field($field_name, array('include_inactive' => 1));
   if (isset($field['bundles'])) {
     foreach ($field['bundles'] as $entity_type => $bundles) {
       foreach ($bundles as $bundle) {
-        $instance = field_info_instance($entity_type, $field_name, $bundle);
+        $instance = field_read_instance($entity_type, $field_name, $bundle, array('include_inactive' => 1));
         field_delete_instance($instance);
       }
     }
@@ -931,7 +931,7 @@ function field_delete_instance($instance
     ->execute();
 
   // Mark instance data for deletion.
-  $field = field_info_field($instance['field_name']);
+  $field = field_read_field($instance['field_name'], array('include_inactive' => 1));
   module_invoke($field['storage']['module'], 'field_storage_delete_instance', $instance);
 
   // Clear the cache.
@@ -1026,11 +1026,11 @@ function field_delete_instance($instance
 function field_purge_batch($batch_size) {
   // Retrieve all deleted field instances. We cannot use field_info_instances()
   // because that function does not return deleted instances.
-  $instances = field_read_instances(array('deleted' => 1), array('include_deleted' => 1));
+  $instances = field_read_instances(array('deleted' => 1), array('include_deleted' => 1, 'include_inactive' => 1));
 
   foreach ($instances as $instance) {
     // field_purge_data() will need the field array.
-    $field = field_info_field_by_id($instance['field_id']);
+    $field = field_read_field($instance['field_name'], array('include_deleted' => 1, 'include_inactive' => 1));
     // Retrieve some entities.
     $query = new EntityFieldQuery();
     $results = $query
@@ -1056,10 +1056,10 @@ function field_purge_batch($batch_size) 
   }
 
   // Retrieve all deleted fields. Any that have no bundles can be purged.
-  $fields = field_read_fields(array('deleted' => 1), array('include_deleted' => 1));
+  $fields = field_read_fields(array('deleted' => 1), array('include_deleted' => 1, 'include_inactive' => 1));
   foreach ($fields as $field) {
     // field_read_fields() does not return $field['bundles'] which we need.
-    $field = field_info_field_by_id($field['id']);
+    $field = field_read_field($field['field_name'], array('include_deleted' => 1, 'include_inactive' => 1));
     if (!isset($field['bundles']) || count($field['bundles']) == 0) {
       field_purge_field($field);
     }
