Index: lucene/src/java/org/apache/lucene/index/DocumentsWriter.java
===================================================================
--- lucene/src/java/org/apache/lucene/index/DocumentsWriter.java	(revision 1006085)
+++ lucene/src/java/org/apache/lucene/index/DocumentsWriter.java	(working copy)
@@ -1171,13 +1171,12 @@
   synchronized private void addDeleteTerm(Term term, int docCount) {
     BufferedDeletes.Num num = deletesInRAM.terms.get(term);
     final int docIDUpto = flushedDocCount + docCount;
-    if (num == null)
+    if (num == null) {
       deletesInRAM.terms.put(term, new BufferedDeletes.Num(docIDUpto));
-    else
+      deletesInRAM.addBytesUsed(BYTES_PER_DEL_TERM + term.bytes.length);
+    } else
       num.setNum(docIDUpto);
     deletesInRAM.numTerms++;
-
-    deletesInRAM.addBytesUsed(BYTES_PER_DEL_TERM + term.bytes.length);
   }
 
   // Buffer a specific docID for deletion.  Currently only
@@ -1188,8 +1187,10 @@
   }
 
   synchronized private void addDeleteQuery(Query query, int docID) {
+    if (!deletesInRAM.queries.containsKey(query)) {
+      deletesInRAM.addBytesUsed(BYTES_PER_DEL_QUERY);
+    }
     deletesInRAM.queries.put(query, Integer.valueOf(flushedDocCount + docID));
-    deletesInRAM.addBytesUsed(BYTES_PER_DEL_QUERY);
   }
 
   /** Does the synchronized work to finish/flush the
