diff --git a/src/unit/unit.cpp b/src/unit/unit.cpp
index 329bd4608..fd2bcedd5 100644
--- a/src/unit/unit.cpp
+++ b/src/unit/unit.cpp
@@ -2095,6 +2095,15 @@ global int CanBuildHere(const UnitType* type,int x,int y)
 	    if( !(x&1 && y&1) ) {
 		return 0;
 	    }
+	    // Don't allow oil patches on oil patches
+	    if( type->OilPatch ) {
+		n=UnitCacheSelect(x,y,x+type->TileWidth,y+type->TileHeight,table);
+		for( i=0; i<n; ++i ) {
+		    if( table[i]->Type->OilPatch ) {
+			return 0;
+		    }
+		}
+	    }
 	} else if( type->UnitType==UnitTypeFly || type->UnitType==UnitTypeNaval ) {
 	    // Flyers and naval units can only be placed on odd tiles
 	    if( x&1 || y&1 ) {