diff --git modules/node/node.admin.inc modules/node/node.admin.inc
index dc755b0..d4d8c04 100644
--- modules/node/node.admin.inc
+++ modules/node/node.admin.inc
@@ -620,7 +620,6 @@ function theme_node_admin_nodes($form) {
 }
 
 function node_multiple_delete_confirm(&$form_state, $nodes) {
-
   $form['nodes'] = array('#prefix' => '<ul>', '#suffix' => '</ul>', '#tree' => TRUE);
   // array_filter returns only elements with TRUE values
   foreach ($nodes as $nid => $value) {
@@ -642,10 +641,10 @@ function node_multiple_delete_confirm(&$form_state, $nodes) {
 
 function node_multiple_delete_confirm_submit($form, &$form_state) {
   if ($form_state['values']['confirm']) {
-    foreach ($form_state['values']['nodes'] as $nid => $value) {
-      node_delete($nid);
-    }
-    drupal_set_message(t('The items have been deleted.'));
+    node_delete_multiple(array_keys($form_state['values']['nodes']));
+    $count = count($form_state['values']['nodes']);
+    watchdog('content', 'Deleted @count posts.', array('@count' => $count));
+    drupal_set_message(t('Deleted @count posts.', array('@count' => $count)));
   }
   $form_state['redirect'] = 'admin/content/node';
   return;
diff --git modules/node/node.module modules/node/node.module
index 5e5b71c..44509c1 100644
--- modules/node/node.module
+++ modules/node/node.module
@@ -1162,37 +1162,41 @@ function _node_save_revision(&$node, $uid, $update = NULL) {
  * Delete a node.
  */
 function node_delete($nid) {
+  node_delete_multiple(array($nid));
+}
 
-  $node = node_load($nid);
-
-  if (node_access('delete', $node)) {
-    db_delete('node')
-      ->condition('nid', $node->nid)
-      ->execute();
-    db_delete('node_revision')
-      ->condition('nid', $node->nid)
-      ->execute();
-    db_delete('history')
-      ->condition('nid', $node->nid)
-      ->execute();
+/**
+ * Delete multiple nodes.
+ */
+function node_delete_multiple($nids) {
+  $nodes = node_load_multiple($nids);
+  
+  db_delete('node')
+  ->condition('nid', $nids, 'IN')
+  ->execute();
+  db_delete('node_revision')
+  ->condition('nid', $nids, 'IN')
+  ->execute();
+  db_delete('history')
+  ->condition('nid', $nids, 'IN')
+  ->execute();
 
+  foreach ($nodes as $nid => $node) {
     // Call the node-specific callback (if any):
     node_invoke($node, 'delete');
     module_invoke_all('node_delete', $node);
 
-    // Clear the page and block caches.
-    cache_clear_all();
-
     // Remove this node from the search index if needed.
     // This code is implemented in node module rather than in search module,
     // because node module is implementing search module's API, not the other
     // way around.
     if (module_exists('search')) {
-      search_wipe($node->nid, 'node');
+      search_wipe($nid, 'node');
     }
-    watchdog('content', '@type: deleted %title.', array('@type' => $node->type, '%title' => $node->title));
-    drupal_set_message(t('@type %title has been deleted.', array('@type' => node_get_types('name', $node), '%title' => $node->title)));
   }
+  
+  // Clear the page and block caches.
+  cache_clear_all();
 }
 
 /**
diff --git modules/node/node.pages.inc modules/node/node.pages.inc
index 436dbe8..fd6c8a9 100644
--- modules/node/node.pages.inc
+++ modules/node/node.pages.inc
@@ -521,7 +521,10 @@ function node_delete_confirm(&$form_state, $node) {
  */
 function node_delete_confirm_submit($form, &$form_state) {
   if ($form_state['values']['confirm']) {
+    $node = node_load($form_state['values']['nid']);
     node_delete($form_state['values']['nid']);
+    watchdog('content', '@type: deleted %title.', array('@type' => $node->type, '%title' => $node->title));
+    drupal_set_message(t('@type %title has been deleted.', array('@type' => node_get_types('name', $node), '%title' => $node->title)));
   }
 
   $form_state['redirect'] = '<front>';
