Index: src/GenPoly/Box.cc
===================================================================
--- src/GenPoly/Box.cc	(revision 4ef750682eb7083fa5b28db39a4662dd376b8b00)
+++ src/GenPoly/Box.cc	(revision 4a79e3c9566a982b72e797c1c5a1603469357927)
@@ -370,12 +370,16 @@
 
 		Expression *Pass1::makeOffsetArray( StructInstType *ty ) {
+			std::list< Declaration* > &baseMembers = ty->get_baseStruct()->get_members();
+			
 			// make a new temporary array
 			Type *offsetType = new BasicType( Type::Qualifiers(), BasicType::LongUnsignedInt );
-			ObjectDecl *arrayTemp = makeTemporary( new PointerType( Type::Qualifiers(), offsetType ) );
+			std::stringstream lenGen;
+			lenGen << baseMembers.size();
+			ConstantExpr *lenExpr = new ConstantExpr( Constant( offsetType->clone(), lenGen.str() ) );
+			ObjectDecl *arrayTemp = makeTemporary( new ArrayType( Type::Qualifiers(), offsetType, lenExpr, false, false ) );
 
 			// build initializer list for temporary
 			std::list< Initializer* > inits;
-			StructDecl *tyBase = ty->get_baseStruct();
-			for ( std::list< Declaration* >::const_iterator member = tyBase->get_members().begin(); member != tyBase->get_members().end(); ++member ) {
+			for ( std::list< Declaration* >::const_iterator member = baseMembers.begin(); member != baseMembers.end(); ++member ) {
 				DeclarationWithType *memberDecl;
 				if ( DeclarationWithType *origMember = dynamic_cast< DeclarationWithType* >( *member ) ) {
