diff --git a/modules/taxonomy/taxonomy.module b/modules/taxonomy/taxonomy.module
index e147c1c..8f78133 100644
--- a/modules/taxonomy/taxonomy.module
+++ b/modules/taxonomy/taxonomy.module
@@ -452,6 +452,7 @@ function taxonomy_vocabulary_save($vocabulary) {
 
   unset($vocabulary->original);
   cache_clear_all();
+  drupal_static_reset('taxonomy_vocabulary_get_names');
 
   return $status;
 }
@@ -1377,8 +1378,12 @@ function taxonomy_vocabulary_load($vid) {
  * @see taxonomy_vocabulary_load()
  */
 function taxonomy_vocabulary_machine_name_load($name) {
-  $vocabularies = taxonomy_vocabulary_load_multiple(NULL, array('machine_name' => $name));
-  return reset($vocabularies);
+  $names = taxonomy_vocabulary_get_names();
+  if (isset($names[$name])) {
+    // Convert $name to $vid in order to avoid automatic cache miss.
+    return taxonomy_vocabulary_load($names[$name]->vid);
+  }
+  return FALSE;
 }
 
 /**
