diff --git a/modules/taxonomy/taxonomy.module b/modules/taxonomy/taxonomy.module
index a93ef9fb0aee945914cd6852303a70874950827e..438ddf0fe5fdeab389cccebb6d4fd19f6b67fec2 100644
--- a/modules/taxonomy/taxonomy.module
+++ b/modules/taxonomy/taxonomy.module
@@ -985,15 +985,22 @@ function taxonomy_get_term_by_name($name) {
  * Return the vocabulary object matching a vocabulary ID.
  *
  * @param $vid
- *   The vocabulary's ID
+ *   The vocabulary's ID.
+ *
+ * @param $reset
+ *   A boolean flag indicating whether to reset the internal cache.
  *
  * @return
  *   The vocabulary object with all of its metadata, if exists, FALSE otherwise.
  *   Results are statically cached.
  */
-function taxonomy_vocabulary_load($vid) {
+function taxonomy_vocabulary_load($vid, $reset = FALSE) {
   static $vocabularies = array();
 
+  if ($reset) {
+    unset($vocabularies[$vid]);
+  }
+
   if (empty($vocabularies[$vid])) {
     // Initialize so if this vocabulary does not exist, we have
     // that cached, and we will not try to load this later.
diff --git a/modules/taxonomy/taxonomy.test b/modules/taxonomy/taxonomy.test
index 1f96bdaaf129a58625a8a58e454ed8b108a150bc..17505f3da874cc2f7a3da8c497e22841b43cd93c 100644
--- a/modules/taxonomy/taxonomy.test
+++ b/modules/taxonomy/taxonomy.test
@@ -49,6 +49,26 @@ class TaxonomyVocabularyLoadTestCase extends DrupalWebTestCase {
     $this->assertTrue(is_object($vocabulary), t('Vocabulary is an object'));
     $this->assertTrue($vocabulary->vid == $vid, t('Valid vocabulary vid is the same as our previously invalid one.'));
   }
+
+  /**
+   * Ensure that the vocabulary static reset works correctly.
+   */
+  function testTaxonomyVocabularyLoadStaticReset() {
+    // Load the first available vocabulary.
+    $original_vocabulary = taxonomy_vocabulary_load(1);
+
+    // Change the name and description.
+    $edit = (array) $original_vocabulary;
+    $edit['name'] = $this->randomName();
+    $edit['description'] = $this->randomName();
+    $this->assertNotEqual($edit['name'], $original_vocabulary->name);
+    taxonomy_save_vocabulary($edit);
+
+    // Load the vocabulary with $reset TRUE.
+    $new_vocabulary = taxonomy_vocabulary_load($original_vocabulary->vid, TRUE);
+    $this->assertEqual($new_vocabulary->name, $edit['name']);
+    $this->assertEqual($new_vocabulary->name, $edit['name']);
+  }
 }
 
 class TaxonomyVocabularyFunctionsTestCase extends DrupalWebTestCase {