Index: /issm/trunk-jpl/src/c/classes/FemModel.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/FemModel.cpp	(revision 19802)
+++ /issm/trunk-jpl/src/c/classes/FemModel.cpp	(revision 19803)
@@ -2426,17 +2426,20 @@
 	if(output_fid==NULL)_error_("FemModel::InitFromBuffers error message: could not initialize output stream");
 	this->parameters->SetParam(output_fid,OutputFilePointerEnum);
-	
+	this->parameters->AddObject(new GenericParam<char**>(&outputbuffer,OutputBufferPointerEnum));
+	this->parameters->AddObject(new GenericParam<size_t*>(&outputsize,OutputBufferSizePointerEnum));
+
 	/*Clean up*/
 	delete iomodel;
 }/*}}}*/
-void FemModel::CleanUpJs(void){/*{{{*/
+void FemModel::CleanUpJs(char** poutput, size_t* psize){/*{{{*/
 
 	/*Intermediary*/
 	FILE *output_fid;
-
-	/*Close output file: */
-	this->parameters->FindParam(&output_fid,OutputFilePointerEnum);
-	fclose(output_fid);
-
+	GenericParam<char**>* outputbufferparam=NULL;
+	GenericParam<size_t*>* outputbuffersizeparam=NULL;
+	char** poutputbuffer;
+	size_t* poutputbuffersize;
+
+	
 	/*Before we delete the profiler, report statistics for this run: */
 	profiler->Tag(Finish);  //final tagging
@@ -2451,4 +2454,19 @@
 				);
 	_printf0_("\n");
+	
+	/*Before we close the output file, recover the buffer and size:*/
+	outputbufferparam = xDynamicCast<GenericParam<char**>*>(this->parameters->FindParamObject(OutputBufferPointerEnum));
+	poutputbuffer=outputbufferparam->GetParameterValue();
+	outputbuffersizeparam = xDynamicCast<GenericParam<size_t*>*>(this->parameters->FindParamObject(OutputBufferSizePointerEnum));
+	poutputbuffersize=outputbuffersizeparam->GetParameterValue();
+
+	/*Close output file. Watch out, only close the output file after recovering the buffer pointers. Not sure 
+	 * why, but otherwise, the buffers are garbage: */
+	this->parameters->FindParam(&output_fid,OutputFilePointerEnum);
+	fclose(output_fid);
+
+	/*Assign output values: */
+	*poutput=*poutputbuffer;
+	*psize=*poutputbuffersize;
 }
 /*}}}*/
Index: /issm/trunk-jpl/src/c/classes/FemModel.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/FemModel.h	(revision 19802)
+++ /issm/trunk-jpl/src/c/classes/FemModel.h	(revision 19803)
@@ -123,5 +123,5 @@
 		FemModel(IssmDouble* buffer, int buffersize, char* toolkits, char* solution, char* modelname,ISSM_MPI_Comm incomm, bool trace=false);
 		void InitFromBuffers(char* buffer, int buffersize, char* toolkits, int solution_type,bool trace,IssmPDouble* X=NULL);
-		void CleanUpJs(void);
+		void CleanUpJs(char** poutput, size_t* psize);
 		#endif
 };
