diff --git a/core/modules/field/field.attach.inc b/core/modules/field/field.attach.inc
index c61ef52..268c614 100644
--- a/core/modules/field/field.attach.inc
+++ b/core/modules/field/field.attach.inc
@@ -434,7 +434,8 @@ function _field_invoke_get_instances($entity_type, $bundle, $options) {
   elseif (isset($options['field_name'])) {
     // Single-field mode by field name: field_info_instance() does the
     // filtering.
-    $instances = array(field_info_instance($entity_type, $options['field_name'], $bundle));
+    $instance = field_info_instance($entity_type, $options['field_name'], $bundle);
+    $instances = $instance ? array($instance) : array();
   }
   else {
     $instances = field_info_instances($entity_type, $bundle);
diff --git a/core/modules/field/tests/field.test b/core/modules/field/tests/field.test
index 9b4cf04..3f22af4 100644
--- a/core/modules/field/tests/field.test
+++ b/core/modules/field/tests/field.test
@@ -1869,6 +1869,28 @@ class FieldDisplayAPITestCase extends FieldTestCase {
     foreach ($this->values as $delta => $value) {
       $this->assertText($setting . '|' . $value['value'], t('Value @delta was displayed with expected setting.', array('@delta' => $delta)));
     }
+
+    // Check that an empty render array is returned when viewing a non-existent
+    // field.
+    $output = field_view_field('test_entity', $this->entity, $this->randomName());
+    $this->assertIdentical($output, array(), t('field_view_field() returns an empty array for a non-existent field.'));
+
+    // Check that an empty render array is returned when viewing a field that
+    // is not attached to the provided entity's bundle.
+    $new_bundle = 'test_bundle_new';
+    $new_field_name = 'test_field_new';
+    field_test_create_bundle($new_bundle);
+    field_create_field(array(
+      'field_name' => $new_field_name,
+      'type' => 'test_field',
+    ));
+    field_create_instance(array(
+      'field_name' => $new_field_name,
+      'entity_type' => 'test_entity',
+      'bundle' => $new_bundle,
+    ));
+    $output = field_view_field('test_entity', $this->entity, $new_field_name);
+    $this->assertIdentical($output, array(), t("field_view_field() returns an empty array for a field that is not attached to the provided entity's bundle."));
   }
 
   /**
