diff --git modules/taxonomy/taxonomy.module modules/taxonomy/taxonomy.module
index c40a72d..1346e79 100644
--- modules/taxonomy/taxonomy.module
+++ modules/taxonomy/taxonomy.module
@@ -565,17 +565,17 @@ function taxonomy_term_delete($tid) {
         }
       }
 
-      $term = taxonomy_term_load($tid);
-
-      db_delete('taxonomy_term_data')
-        ->condition('tid', $tid)
-        ->execute();
-      db_delete('taxonomy_term_hierarchy')
-        ->condition('tid', $tid)
-        ->execute();
-
-      field_attach_delete('taxonomy_term', $term);
-      module_invoke_all('taxonomy_term_delete', $term);
+      if ($term = taxonomy_term_load($tid)) {
+        db_delete('taxonomy_term_data')
+          ->condition('tid', $tid)
+          ->execute();
+        db_delete('taxonomy_term_hierarchy')
+          ->condition('tid', $tid)
+          ->execute();
+
+        field_attach_delete('taxonomy_term', $term);
+        module_invoke_all('taxonomy_term_delete', $term);
+      }
     }
 
     $tids = $orphans;
diff --git modules/taxonomy/taxonomy.test modules/taxonomy/taxonomy.test
index 39a4456..277a7ee 100644
--- modules/taxonomy/taxonomy.test
+++ modules/taxonomy/taxonomy.test
@@ -337,6 +337,18 @@ class TaxonomyTermUnitTest extends TaxonomyWebTestCase {
       'group' => 'Taxonomy',
     );
   }
+
+  function testTermDelete() {
+    $vocabulary = $this->createVocabulary();
+    $valid_term = $this->createTerm($vocabulary);
+    // Delete a valid term.
+    taxonomy_term_delete($valid_term->tid);
+    $terms = taxonomy_term_load_multiple(array(), array('vid' => $vocabulary->vid));
+    $this->assertTrue(empty($terms), 'Vocabulary is empty after deletion');
+
+    // Delete an invalid term. Should not throw any notices.
+    taxonomy_term_delete(42);
+  }
 }
 
 /**
