Index: trunk/src/org/openstreetmap/josm/data/osm/DataSet.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/DataSet.java	(revision 15890)
+++ trunk/src/org/openstreetmap/josm/data/osm/DataSet.java	(revision 15891)
@@ -430,4 +430,19 @@
     }
 
+    /**
+     * Searches for all primitives in the given bounding box
+     *
+     * @param bbox the bounding box
+     * @return List of primitives in the given bbox. Can be empty but not null
+     * @since 15891
+     */
+    public List<OsmPrimitive> searchPrimitives(BBox bbox) {
+        List<OsmPrimitive> primitiveList = new ArrayList<>();
+        primitiveList.addAll(searchNodes(bbox));
+        primitiveList.addAll(searchWays(bbox));
+        primitiveList.addAll(searchRelations(bbox));
+        return primitiveList;
+    }
+
     @Override
     public Collection<Relation> getRelations() {
Index: trunk/src/org/openstreetmap/josm/data/osm/QuadBuckets.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/osm/QuadBuckets.java	(revision 15890)
+++ trunk/src/org/openstreetmap/josm/data/osm/QuadBuckets.java	(revision 15891)
@@ -586,5 +586,5 @@
     public List<T> search(BBox searchBbox) {
         List<T> ret = new ArrayList<>();
-        if (!searchBbox.isValid()) {
+        if (searchBbox == null || !searchBbox.isValid()) {
             return ret;
         }
