diff --git a/modules/taxonomy/taxonomy.module b/modules/taxonomy/taxonomy.module
index f08df60..2737010 100644
--- a/modules/taxonomy/taxonomy.module
+++ b/modules/taxonomy/taxonomy.module
@@ -1005,12 +1005,18 @@ function taxonomy_get_tree($vid, $parent = 0, $max_depth = NULL, $load_entities
  *
  * @param name
  *   Name of the term to search for.
+ * @param vid
+ *   Vocabulary ID of the vocabulary to limit the search by, defaults to all.
  *
  * @return
  *   An array of matching term objects.
  */
-function taxonomy_get_term_by_name($name) {
-  return taxonomy_term_load_multiple(array(), array('name' => trim($name)));
+function taxonomy_get_term_by_name($name, $vid = NULL) {
+  $conditions = array('name' => trim($name));
+  if ($vid) {
+    $conditions['vid'] = $vid;
+  }
+  return taxonomy_term_load_multiple(array(), $conditions);
 }
 
 /**
diff --git a/modules/taxonomy/taxonomy.test b/modules/taxonomy/taxonomy.test
index 1fd47f5..2909bf2 100644
--- a/modules/taxonomy/taxonomy.test
+++ b/modules/taxonomy/taxonomy.test
@@ -755,6 +755,24 @@ class TaxonomyTermTestCase extends TaxonomyWebTestCase {
     // Try to load the term using a substring of the name.
     $terms = taxonomy_get_term_by_name(drupal_substr($term->name, 2));
     $this->assertFalse($terms);
+
+    // Create another term in a different vocabulary with the same name.
+    $new_vocabulary = $this->createVocabulary();
+    $new_term = new stdClass();
+    $new_term->name = $term->name;
+    $new_term->description = $this->randomName();
+    $new_term->format = $term->format;
+    $new_term->vid = $new_vocabulary->vid;
+    taxonomy_term_save($new_term);
+
+    // Load multiple terms with the same name.
+    $terms = taxonomy_get_term_by_name($term->name);
+    $this->assertEqual(count($terms), 2, t('Two terms loaded with the same name'));
+    
+    // Load single terms when restricted to one vocabulary.
+    $terms = taxonomy_get_term_by_name($term->name, $term->vid);
+    $this->assertEqual(count($terms), 1, t('One term loaded when restricted by vocabulary'));
+    $this->assertTrue(isset($terms[$term->tid]), t('Term loaded using exact name and vocabulary id.'));
   }
 }
 
