? MISC-FIELD-CHANGES-REAPPLY.patch
? Makefile
? d6-50-nodes.sql.gz
? d7-50-nodes-new.sql.gz
? d7-50-nodes.sql.gz
? head.kpf
? patches
? modules/field/modules/options/options.test
? scripts/OLD-generate-autoload.pl
? scripts/generate-autoload.pl
? sites/all/cck
? sites/all/modules/color
? sites/all/modules/combofield
? sites/all/modules/devel
? sites/all/modules/pbs
? sites/all/modules/taint
? sites/default/files
? sites/default/private
? sites/default/settings.php
Index: modules/field/field.crud.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/field/field.crud.inc,v
retrieving revision 1.29
diff -u -F^[fc] -r1.29 field.crud.inc
--- modules/field/field.crud.inc	7 Sep 2009 15:50:52 -0000	1.29
+++ modules/field/field.crud.inc	7 Sep 2009 17:07:00 -0000
@@ -239,6 +239,15 @@ function field_create_field($field) {
     throw new FieldException($message);
   }
 
+  // Disallow reserved field names. This can't prevent all field name
+  // collisions with existing object properties, but some is better
+  // than none.
+  foreach (field_info_fieldable_types() as $type => $info) {
+    if (in_array($field['field_name'], $info['object keys'])) {
+      throw new FieldException(t('Attempt to create field name %name which is reserved by entity type %type.', array('%name' => $field['field_name'], '%type' => $type)));
+    }
+  }
+
   $field += array(
     'cardinality' => 1,
     'translatable' => FALSE,
Index: modules/field/field.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/field/field.test,v
retrieving revision 1.47
diff -u -F^[fc] -r1.47 field.test
--- modules/field/field.test	31 Aug 2009 05:35:47 -0000	1.47
+++ modules/field/field.test	7 Sep 2009 17:07:00 -0000
@@ -1543,6 +1543,20 @@ class FieldCrudTestCase extends FieldTes
     catch (FieldException $e) {
       $this->pass(t('Cannot create a field with a name longer than 32 characters.'));
     }
+
+    // Check that field name can not be an object key.
+    // "ftvid" is known as an object key from the "test_entity" type.
+    try {
+      $field_definition = array(
+        'type' => 'test_field',
+        'field_name' => 'ftvid',
+      );
+      $field = field_create_field($field_definition);
+      $this->fail(t('Cannot create a field bearing the name of an object key.'));
+    }
+    catch (FieldException $e) {
+      $this->pass(t('Cannot create a field bearing the name of an object key.'));
+    }
   }
 
   /**
