Index: trunk/src/org/openstreetmap/josm/data/osm/Relation.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/Relation.java	(revision 3030)
+++ trunk/src/org/openstreetmap/josm/data/osm/Relation.java	(revision 3032)
@@ -7,4 +7,5 @@
 import java.util.Set;
 
+import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.visitor.Visitor;
 import org.openstreetmap.josm.tools.CopyList;
@@ -382,4 +383,10 @@
                     throw new DataIntegrityProblemException(String.format("Relation member must be part of the same dataset as relation(%s, %s)", getPrimitiveId(), rm.getMember().getPrimitiveId()));
             }
+            if (Main.pref.getBoolean("debug.checkDeleteReferenced")) {
+                for (RelationMember rm: members) {
+                    if (rm.getMember().isDeleted())
+                        throw new DataIntegrityProblemException("Deleted member referenced: " + toString());
+                }
+            }
         }
     }
Index: trunk/src/org/openstreetmap/josm/data/osm/Way.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/Way.java	(revision 3030)
+++ trunk/src/org/openstreetmap/josm/data/osm/Way.java	(revision 3032)
@@ -9,4 +9,5 @@
 import java.util.List;
 
+import org.openstreetmap.josm.Main;
 import org.openstreetmap.josm.data.osm.visitor.Visitor;
 import org.openstreetmap.josm.tools.CopyList;
@@ -371,4 +372,10 @@
                     throw new DataIntegrityProblemException("Nodes in way must be in the same dataset");
             }
+            if (Main.pref.getBoolean("debug.checkDeleteReferenced")) {
+                for (Node n: nodes) {
+                    if (n.isDeleted())
+                        throw new DataIntegrityProblemException("Deleted node referenced: " + toString());
+                }
+            }
         }
     }
