diff --git a/modules/node/content_types.inc b/modules/node/content_types.inc
index 7442949..4023600 100644
--- a/modules/node/content_types.inc
+++ b/modules/node/content_types.inc
@@ -232,9 +232,19 @@ function node_type_form_validate($form, &$form_state) {
     if (!preg_match('!^[a-z0-9_]+$!', $type->type)) {
       form_set_error('type', t('The machine-readable name must contain only lowercase letters, numbers, and underscores.'));
     }
+    // No content type should have a type value equal to the orig_type value
+    // of another content type.
+    $invalid_type = FALSE;
+    $infos = node_get_types();
+    foreach ($infos as $info) {
+      if ($type->type == $info->orig_type) {
+        $invalid_type = TRUE;
+        break;
+      }
+    }
     // 'theme' conflicts with theme_node_form().
     // '0' is invalid, since elsewhere we check it using empty().
-    if (in_array($type->type, array('0', 'theme'))) {
+    if (in_array($type->type, array('0', 'theme')) || $invalid_type) {
       form_set_error('type', t("Invalid machine-readable name. Please enter a name other than %invalid.", array('%invalid' => $type->type)));
     }
   }
