Index: modules/field/field.info.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/field/field.info.inc,v
retrieving revision 1.28
diff -u -p -r1.28 field.info.inc
--- modules/field/field.info.inc	13 Nov 2009 11:59:14 -0000	1.28
+++ modules/field/field.info.inc	19 Nov 2009 23:43:50 -0000
@@ -475,10 +475,14 @@ function field_info_fields($bundle_type 
     $fields = array($field['field_name'] => $field);
   }
   elseif (isset($bundle_type)) {
-    $instances = field_info_instances($bundle_type);
-    $fields = array();
-    foreach ($instances as $field_name => $instance) {
-      $fields[$field_name] = field_info_field($field_name);
+    $entity_types = field_info_bundle_entity($bundle_type);
+    foreach ($entity_types AS $entity_type) {
+      $instances = field_info_instances($entity_type, $bundle_type);
+      $fields = array();
+      foreach ($instances as $field_name => $instance) {
+        $key = count($entity_types) > 1 ? $entity_type . "-" . $field_name : $field_name;
+        $fields[$key] = field_info_field($field_name);
+      }
     }
   }
   else {
@@ -499,6 +503,27 @@ function field_info_fields($bundle_type 
 }
 
 /**
+ * Returns an array of entity types that use a given bundle
+ *
+ * @param $bundle_type
+ *   The bundle type on which to filter the list of fields.
+ * @return
+ *   An array of entity type names.
+ */
+function field_info_bundle_entity($bundle_type) {
+  //get all bundles
+  $all_types = field_info_bundles();
+  //find entities that use this bundle
+  $obj_types = array();
+  foreach ($all_types AS $entity_type => $bundles) {
+    if (array_key_exists($bundle_type, $bundles)) {
+      $entity_types[] = $entity_type;
+    }
+  }
+  return $entity_types;
+}
+
+/**
  * Return data about an individual field.
  *
  * @param $field_name
