Index: /issm/trunk-jpl/src/c/classes/Inputs/ArrayInput.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Inputs/ArrayInput.cpp	(revision 27112)
+++ /issm/trunk-jpl/src/c/classes/Inputs/ArrayInput.cpp	(revision 27113)
@@ -81,17 +81,38 @@
 	marshallhandle->call(object_enum);
 	marshallhandle->call(this->numberofelements_local);
+
+	/*Allocate memory if reading restart file*/
+	if(marshallhandle->OperationNumber() == MARSHALLING_LOAD){
+		_assert_(this->numberofelements_local>0);
+		_assert_(this->numberofelements_local<1e11);
+		if(this->numberofelements_local){
+			this->N                      = xNewZeroInit<int>(this->numberofelements_local);
+			this->values                 = xNewZeroInit<IssmDouble*>(this->numberofelements_local);
+		}
+		else{
+			this->N      = NULL;
+			this->values = NULL;
+		}
+	}
+
+	/*Marshall N*/
 	if(this->numberofelements_local){
 		marshallhandle->call(this->N,this->numberofelements_local);
+	}
+
+	/*Marshall individual arrays*/
+	if(this->numberofelements_local){
 		for(int i=0;i<this->numberofelements_local;i++){
-			if(this->values[i]){
+			if(this->N[i]){
+
+				/*Allocate if reading restart*/
+				if(marshallhandle->OperationNumber() == MARSHALLING_LOAD){
+					this->values[i] = xNew<IssmDouble>(this->N[i]);
+				}
+				_assert_(this->values[i]);
 				marshallhandle->call(this->values[i],this->N[i]);
 			}
 		}
 	}
-	else{
-		this->N      = NULL;
-		this->values = NULL;
-	}
-
 }
 /*}}}*/
Index: /issm/trunk-jpl/src/c/classes/Inputs/Inputs.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Inputs/Inputs.cpp	(revision 27112)
+++ /issm/trunk-jpl/src/c/classes/Inputs/Inputs.cpp	(revision 27113)
@@ -167,4 +167,9 @@
 				this->inputs[index]=input;
 			}
+			else if(object_enum==ArrayInputEnum){
+				ArrayInput* input=new ArrayInput();
+				input->Marshall(marshallhandle);
+				this->inputs[index]=input;
+			}
 			else{
 				_error_("input "<<EnumToStringx(object_enum)<<" not supported");
