diff --git a/core/modules/language/language.admin.inc b/core/modules/language/language.admin.inc
index 33bc147..71434b7 100644
--- a/core/modules/language/language.admin.inc
+++ b/core/modules/language/language.admin.inc
@@ -306,7 +306,7 @@ function language_admin_add_custom_form_validate($form, &$form_state) {
   if ($form_state['values']['predefined_langcode'] == 'custom') {
     $langcode = $form_state['values']['langcode'];
     // Reuse the editing form validation routine if we add a custom language.
-    language_admin_edit_form_validate($form, $form_state);
+    language_admin_edit_form_validate($form['custom_language'], $form_state);
 
     $languages = language_list();
     if (isset($languages[$langcode])) {
diff --git a/core/modules/language/language.test b/core/modules/language/language.test
index 0a59937..291bb2e 100644
--- a/core/modules/language/language.test
+++ b/core/modules/language/language.test
@@ -57,6 +57,20 @@ class LanguageListTest extends DrupalWebTestCase {
     $this->assertRaw('"edit-site-default-' . $langcode .'"', t('Language code found.'));
     $this->assertText(t($name), t('Test language added.'));
 
+    // Try to add a language with an invalid name.
+    // Code for the language.
+    $langcode = 'xx_broken';
+    // The invalid name for the language.
+    $name = '<br />' . $this->randomName(16);
+    $edit_broken = array(
+     'predefined_langcode' => 'custom',
+     'langcode' => $langcode,
+     'name' => $name,
+     'direction' => '0',
+    );
+    $this->drupalPost('admin/config/regional/language/add', $edit_broken, t('Add custom language'));
+    $this->assertRaw(t('%field cannot contain any markup.', array('%field' => t('Language name'))), t('Markup in language name not allowed.'));
+
     // Check if we can change the default language.
     $path = 'admin/config/regional/language';
     $this->drupalGet($path);
