diff -r 6c1cc50c4808 -r 443d24cfdf2d src/Types.cpp --- a/src/Types.cpp Sat Nov 17 23:13:39 2012 -0800 +++ b/src/Types.cpp Sun Nov 18 14:53:23 2012 -0800 @@ -63,6 +63,13 @@ ArrayType * ArrayType::New(Zone *zone, Handle contained, int elements) { + if (contained->isArray() && + ArrayType::cast(contained)->levels() == MAX_ARRAY_DEPTH) + { + zone->reportError(Message_MaximumArrayDepth); + return NULL; + } + Local type(zone, ArrayType::cast(zone->allocate(MapKind_ArrayType, sizeof(ArrayType), Heap::Tenure_Old))); if (!type) return NULL; @@ -201,7 +208,6 @@ } } - StructType * StructType::New(Zone *zone, Handle name, Handle fields) {