--- C:/DOCUME~1/MIKE~1.CAR/LOCALS~1/Temp/content_handler_field.in-revBASE.svn001.tmp.inc	Tue Aug 30 21:46:09 2011
+++ C:/repo/drupal/sites/all/modules/cck/includes/views/handlers/content_handler_field.inc	Tue Aug 30 21:35:42 2011
@@ -180,9 +180,62 @@
   }
 
   function render($values) {
+    // Find values if missing/broken.
+    // nid can be missing.
+    if (empty($values->{$this->aliases['nid']})) {
+      foreach ($values as $key => $value) {
+        if (is_numeric($value) && substr($key, -4) === '_nid' && db_result(db_query("SELECT TRUE FROM {node} WHERE nid = %d", $value))) {
+          $this->aliases['nid'] = $key;
+          break;
+        }
+      }
+      $nid = $values->{$this->aliases['nid']};
+    }
+    else {
+      $nid = $values->{$this->aliases['nid']};
+    }
+
+    // vid can be missing.
+    if (empty($values->{$this->aliases['vid']})) {
+      foreach ($values as $key => $value) {
+        if (is_numeric($value) && substr($key, -4) === '_vid' && db_result(db_query("SELECT TRUE FROM {node} WHERE vid = %d", $value))) {
+          $this->aliases['vid'] = $key;
+          break;
+        }
+      }
+      if (empty($values->{$this->aliases['vid']}) && !empty($values->{$this->aliases['nid']})) {
+        $vid = db_result(db_query("SELECT vid FROM {node} WHERE nid = %d", $values->{$this->aliases['nid']}));
+      }
+      else {
+        $vid = $values->{$this->aliases['vid']};
+      }
+    }
+    else {
+      $vid = $values->{$this->aliases['vid']};
+    }
+
+    // type can be missing.
+    if (empty($values->{$this->aliases['type']})) {
+      foreach ($values as $key => $value) {
+        if (substr($key, -5) === '_type' && db_result(db_query("SELECT TRUE FROM {node_type} WHERE TYPE = '%s'", $value))) {
+          $this->aliases['type'] = $key;
+          break;
+        }
+      }
+      if (empty($values->{$this->aliases['type']}) && !empty($values->{$this->aliases['nid']})) {
+        $type = db_result(db_query("SELECT type FROM {node} WHERE nid = %d", $values->{$this->aliases['nid']}));
+      }
+      else {
+        $type = $values->{$this->aliases['type']};
+      }
+    }
+    else {
+      $type = $values->{$this->aliases['type']};
+    }
+
     // We're down to a single node here, so we can retrieve the actual field
     // definition for the node type being considered.
-    $field = content_fields($this->content_field['field_name'], $values->{$this->aliases['type']});
+    $field = content_fields($this->content_field['field_name'], $type);
 
     // If the field does not appear in the node type, then we have no value
     // to display, and can just return.
@@ -195,9 +248,9 @@
 
     // Build a pseudo-node from the retrieved values.
     $node = drupal_clone($values);
-    $node->type = $values->{$this->aliases['type']};
-    $node->nid = $values->{$this->aliases['nid']};
-    $node->vid = $values->{$this->aliases['vid']};
+    $node->type = $type;
+    $node->nid = $nid;
+    $node->vid = $vid;
     // Some formatters need to behave differently depending on the build_mode
     // (for instance: preview), so we provide one.
     $node->build_mode = NODE_BUILD_NORMAL;
