Index: trunk/src/org/openstreetmap/josm/tools/Geometry.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/Geometry.java	(revision 6006)
+++ trunk/src/org/openstreetmap/josm/tools/Geometry.java	(revision 6007)
@@ -651,14 +651,16 @@
             EastNorth n1 = nodes.get((i+1) % nodes.size()).getEastNorth();
 
-            BigDecimal x0 = new BigDecimal(n0.east());
-            BigDecimal y0 = new BigDecimal(n0.north());
-            BigDecimal x1 = new BigDecimal(n1.east());
-            BigDecimal y1 = new BigDecimal(n1.north());
-
-            BigDecimal k = x0.multiply(y1, MathContext.DECIMAL128).subtract(y0.multiply(x1, MathContext.DECIMAL128));
-
-            area = area.add(k, MathContext.DECIMAL128);
-            east = east.add(k.multiply(x0.add(x1, MathContext.DECIMAL128), MathContext.DECIMAL128));
-            north = north.add(k.multiply(y0.add(y1, MathContext.DECIMAL128), MathContext.DECIMAL128));
+            if (n0.isValid() && n1.isValid()) {
+                BigDecimal x0 = new BigDecimal(n0.east());
+                BigDecimal y0 = new BigDecimal(n0.north());
+                BigDecimal x1 = new BigDecimal(n1.east());
+                BigDecimal y1 = new BigDecimal(n1.north());
+    
+                BigDecimal k = x0.multiply(y1, MathContext.DECIMAL128).subtract(y0.multiply(x1, MathContext.DECIMAL128));
+    
+                area = area.add(k, MathContext.DECIMAL128);
+                east = east.add(k.multiply(x0.add(x1, MathContext.DECIMAL128), MathContext.DECIMAL128));
+                north = north.add(k.multiply(y0.add(y1, MathContext.DECIMAL128), MathContext.DECIMAL128));
+            }
         }
 
