Index: /issm/trunk-jpl/src/c/toolkits/issm/SeqMat.cpp
===================================================================
--- /issm/trunk-jpl/src/c/toolkits/issm/SeqMat.cpp	(revision 11761)
+++ /issm/trunk-jpl/src/c/toolkits/issm/SeqMat.cpp	(revision 11762)
@@ -32,5 +32,6 @@
 	this->M=pM;
 	this->N=pN;
-	this->matrix=(double*)xcalloc(pM*pN,sizeof(double));
+	this->matrix=NULL;
+	if(M*N) this->matrix=(double*)xcalloc(pM*pN,sizeof(double));
 }
 /*}}}*/
@@ -40,5 +41,6 @@
 	this->M=pM;
 	this->N=pN;
-	this->matrix=(double*)xcalloc(pM*pN,sizeof(double));
+	this->matrix=NULL;
+	if(M*N) this->matrix=(double*)xcalloc(pM*pN,sizeof(double));
 }
 /*}}}*/
@@ -50,6 +52,9 @@
 	this->M=pM;
 	this->N=pN;
-	this->matrix=(double*)xcalloc(pM*pN,sizeof(double));
-	memcpy(this->matrix,serial_mat,pM*pN*sizeof(double));
+	this->matrix=NULL;
+	if(M*N){
+		this->matrix=(double*)xcalloc(pM*pN,sizeof(double));
+		memcpy(this->matrix,serial_mat,pM*pN*sizeof(double));
+	}
 
 }
@@ -60,5 +65,6 @@
 	this->M=pM;
 	this->N=pN;
-	this->matrix=(double*)xcalloc(pM*pN,sizeof(double));
+	this->matrix=NULL;
+	if(M*N)this->matrix=(double*)xcalloc(pM*pN,sizeof(double));
 }
 /*}}}*/
@@ -91,17 +97,25 @@
 mxArray* SeqMat::ToMatlabMatrix(void){
 
+	/*Intermediary: */
 	double* buffer=NULL;
-	
+	mxArray* pfield=NULL;
+	
+	/*output: */
 	mxArray* dataref=NULL;
 
 	/*copy vector into a new buffer: */
-	buffer=(double*)xmalloc(this->M*this->N*sizeof(double));
-	memcpy(buffer,this->matrix,M*N*sizeof(double));
-
-	dataref = mxCreateDoubleMatrix(0,0,mxREAL);
-	mxSetM(dataref,this->M);
-	mxSetN(dataref,this->N);
-	mxSetPr(dataref,buffer);	
-
+	if(this->M*this->N){
+		buffer=(double*)xmalloc(this->M*this->N*sizeof(double));
+		memcpy(buffer,this->matrix,M*N*sizeof(double));
+
+		pfield=mxCreateDoubleMatrix(0,0,mxREAL);
+		mxSetM(pfield,this->N);
+		mxSetN(pfield,this->M);
+		mxSetPr(pfield,buffer);
+		
+		//transpose the matrix, written directly to matlab! from C to matlab.
+		mexCallMATLAB(1,&dataref, 1, &pfield, "transpose");
+	}
+	else dataref=mxCreateDoubleMatrix(0,0,mxREAL);
 
 	/*do not erase buffer!: */
@@ -109,4 +123,8 @@
 
 }
+
+
+	
+	
 /*}}}*/
 /*FUNCTION MatlabMatrixToSeqMat{{{1*/
Index: /issm/trunk-jpl/src/c/toolkits/issm/SeqVec.cpp
===================================================================
--- /issm/trunk-jpl/src/c/toolkits/issm/SeqVec.cpp	(revision 11761)
+++ /issm/trunk-jpl/src/c/toolkits/issm/SeqVec.cpp	(revision 11762)
@@ -30,6 +30,6 @@
 
 	this->M=pM;
+	this->vector=NULL;
 	if(this->M) this->vector=(double*)xcalloc(pM,sizeof(double));
-	else this->vector=NULL;
 }
 /*}}}*/
@@ -40,6 +40,9 @@
 
 	this->M=pM;
-	this->vector=(double*)xcalloc(pM,sizeof(double));
-	memcpy(this->vector,buffer,pM*sizeof(double));
+	this->vector=NULL;
+	if(this->M){
+		this->vector=(double*)xcalloc(pM,sizeof(double));
+		memcpy(this->vector,buffer,pM*sizeof(double));
+	}
 }
 /*}}}*/
@@ -72,11 +75,14 @@
 
 	/*copy vector into a new buffer: */
-	buffer=(double*)xmalloc(this->M*sizeof(double));
-	memcpy(buffer,vector,M*sizeof(double));
-
-	dataref = mxCreateDoubleMatrix(0,0,mxREAL);
-	mxSetM(dataref,this->M);
-	mxSetN(dataref,1);
-	mxSetPr(dataref,buffer);	
+	if(this->M){
+		buffer=(double*)xmalloc(this->M*sizeof(double));
+		memcpy(buffer,vector,M*sizeof(double));
+
+		dataref = mxCreateDoubleMatrix(0,0,mxREAL);
+		mxSetM(dataref,this->M);
+		mxSetN(dataref,1);
+		mxSetPr(dataref,buffer);	
+	}
+	else dataref = mxCreateDoubleMatrix(0,0,mxREAL);
 
 
