Index: src/uk/me/parabola/mkgmap/reader/osm/MultiPolygonRelation.java
===================================================================
--- src/uk/me/parabola/mkgmap/reader/osm/MultiPolygonRelation.java	(revision 4900)
+++ src/uk/me/parabola/mkgmap/reader/osm/MultiPolygonRelation.java	(working copy)
@@ -709,6 +709,8 @@
 
 
 	void processPartition(Partition partition) {
+		if (partition.innerEqualsOuter)
+			return;
 		if (partition.outerPolygons.isEmpty()) {
 			renderingFailed = true;
 			log.error("Internal error: Failed to render " + this);
@@ -1513,6 +1515,8 @@
 	 *
 	 */
 	protected class Partition {
+		public boolean innerEqualsOuter;
+
 		/** list of polygons with a fixed order */
 		final List<JoinedWay> polygons; 
 
@@ -1545,6 +1549,18 @@
 			nestedOuterPolygons = new BitSet(list.size());
 			nestedInnerPolygons = new BitSet(list.size());
 			outmostInnerPolygons = new BitSet(list.size());
+			
+			// handle special case produced by partitioning
+			// we may see two identical rectangles for inner and outer
+			if (polygons.size() == 2 && polygons.get(0).getPoints().size() == 5 && polygons.get(1).getPoints().size() == 5 ) {
+				JoinedWay p0 = polygons.get(0);
+				JoinedWay p1 = polygons.get(1);
+				int x = IsInUtil.isLineInShape(p0.getPoints(), p1.getPoints(), p0.getArea());
+				if (x == IsInUtil.ON) {
+					innerEqualsOuter = true;
+				}
+			}
+
 		}
 		
 		public void markFinished(PolygonStatus currentPolygon) {
