Index: modules/node/node.module
===================================================================
--- modules/node/node.module	(revision 15260)
+++ modules/node/node.module	(working copy)
@@ -2368,12 +2368,10 @@
  */
 function node_delete($nid) {
 
-  $node = node_load($nid);
+  // do not cache the node to save memory on mass deletions
+  $node = node_load($nid, NULL, TRUE);
 
   if (node_access('delete', $node)) {
-    db_query('DELETE FROM {node} WHERE nid = %d', $node->nid);
-    db_query('DELETE FROM {node_revisions} WHERE nid = %d', $node->nid);
-
     // Call the node-specific callback (if any):
     node_invoke($node, 'delete');
     node_invoke_nodeapi($node, 'delete');
@@ -2385,6 +2383,11 @@
     if (function_exists('search_wipe')) {
       search_wipe($node->nid, 'node');
     }
+
+    // Last step: Delete node and it's revisionfrom database
+    db_query('DELETE FROM {node_revisions} WHERE nid = %d', $node->nid);
+    db_query('DELETE FROM {node} WHERE nid = %d', $node->nid);
+
     drupal_set_message(t('%title has been deleted.', array('%title' => $node->title)));
     watchdog('content', t('@type: deleted %title.', array('@type' => t($node->type), '%title' => $node->title)));
   }
