diff --git a/modules/node/node.module b/modules/node/node.module
index acbdbc0acd5824d43612903fbc380fae2fac6bc7..0453b3226ea58ec69f727b92d38c1a562ccf7a27 100644
--- a/modules/node/node.module
+++ b/modules/node/node.module
@@ -1067,6 +1067,7 @@ function node_delete_multiple($nids) {
     // Call the node-specific callback (if any):
     node_invoke($node, 'delete');
     module_invoke_all('node_delete', $node);
+    field_attach_delete('node', $node);
 
     // Remove this node from the search index if needed.
     // This code is implemented in node module rather than in search module,
diff --git a/modules/node/node.pages.inc b/modules/node/node.pages.inc
index 185160e086acc01ac4b90e7ce47a4453a0abaeac..6990d6c19e9f284b640356af35899d28b8f472ba 100644
--- a/modules/node/node.pages.inc
+++ b/modules/node/node.pages.inc
@@ -551,6 +551,7 @@ function node_revision_delete_confirm_submit($form, &$form_state) {
     ->condition('vid', $node_revision->vid)
     ->execute();
   module_invoke_all('node_delete_revision', $node_revision);
+  field_attach_delete_revision('node', $node_revision);
   watchdog('content', '@type: deleted %title revision %revision.', array('@type' => $node_revision->type, '%title' => $node_revision->title, '%revision' => $node_revision->vid));
   drupal_set_message(t('Revision from %revision-date of @type %title has been deleted.', array('%revision-date' => format_date($node_revision->revision_timestamp), '@type' => node_type_get_name($node_revision), '%title' => $node_revision->title)));
   $form_state['redirect'] = 'node/' . $node_revision->nid;