### Eclipse Workspace Patch 1.0
#P features
Index: includes/features.field.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/features/includes/Attic/features.field.inc,v
retrieving revision 1.1.2.1
diff -u -r1.1.2.1 features.field.inc
--- includes/features.field.inc	7 May 2010 17:11:11 -0000	1.1.2.1
+++ includes/features.field.inc	31 Aug 2010 18:06:27 -0000
@@ -25,7 +25,7 @@
   foreach ($modules as $module) {
     $fields = module_invoke($module, 'field_default_fields');
     foreach ($fields as $name => $field) {
-      $map["{$field['bundle']}-{$field['field_name']}"] = $module;
+      $map["{$field['bundles']}-{$field['field_name']}"] = $module;
     }
   }
 
@@ -78,11 +78,31 @@
   foreach ($data as $instance) {
     list($bundle, $field_name) = explode('-', $instance);
 
-    $field = field_info_field($field_name); 
-
+    $field = field_info_field($field_name);
+    if(!$field){
+      //Outch - something is wrong :|
+      //Jump to next field to keep the code clean
+      continue;
+    }
+    
     unset($field['columns']);
     unset($field['locked']);
     unset($field['storage']);
+    
+    //Attache instance information
+    if(isset($field['bundles'])){
+      foreach($field['bundles'] as $entity_type=>$bundles){
+        if(in_array($bundle, $bundles)){
+            $fieldInstance = field_info_instance($entity_type, $field_name, $bundle);
+            $field['instances'][$field_name][$bundle] = $fieldInstance;
+            // Add any labels to translatables array.
+            if (!empty($fieldInstance['widget']['label'])) {
+              $translatables[] = $field['widget']['label'];
+            }
+            break;
+        }
+      }
+    }
 
     $code[] = '  // Exported field: ' . $field_name;
     $code[] = '  $fields[] = ' . features_var_export($field, '  ') . ';';
@@ -98,7 +118,7 @@
   }
   $code[] = '  return $fields;';
   $code = implode("\n", $code);
-  return array('field_default_fields' => $code);
+  return array('field_default_fields' => $code, );
 }
 
 
@@ -120,20 +140,44 @@
 
     foreach ($fields as $field) {
       $existing_field = field_info_field($field['field_name']);
-      if ($existing_field) {
+      unset($field['id']);
+      if (!empty($existing_field)) {
         field_update_field($field);
       }
       else {
         field_create_field($field);
       }
-
-      $existing_instance = field_info_instance($field['entity_type'], $field['type_name'], $field['bundle']);
-      if ($existing_instance) {
-        field_update_instance($field);
-      }
-      else {
-        field_create_instance($field);
+   
+      // update/create field instances
+      if(!empty($field['bundles'])) {
+        foreach($field['bundles'] as $entity_type => $bundles) {
+          if(is_array($bundles)) {
+            foreach($bundles as $bundle) {
+              $instance = field_info_instance($entity_type, $field['field_name'], $bundle);
+              if ($instance) {
+                field_update_instance($instance);
+              } else {
+                //@TODO Is this legacy check within a dev release really necessary?
+                if(isset($field['instances'])){
+                  //Check if this bundle has an instance - if not go to the next one
+                  if(!isset($field['instances'][$field['field_name']][$bundle])){
+                    continue;
+                  }
+                  $fieldInstance = $field['instances'][$field['field_name']][$bundle];
+                }
+                else{
+                  $fieldInstance = $field;
+                }
+                $fieldInstance['entity_type'] = $entity_type;
+                $fieldInstance['bundle'] = $bundle;
+                field_create_instance($fieldInstance);
+              }            
+            }
+          }
+           
+        }
       }
+
       variable_set('menu_rebuild_needed', TRUE);
     }
   }
