Index: /issm/trunk-jpl/src/c/toolkits/petsc/patches/PetscMatrixToMatlabMatrix.cpp
===================================================================
--- /issm/trunk-jpl/src/c/toolkits/petsc/patches/PetscMatrixToMatlabMatrix.cpp	(revision 11939)
+++ /issm/trunk-jpl/src/c/toolkits/petsc/patches/PetscMatrixToMatlabMatrix.cpp	(revision 11940)
@@ -25,5 +25,5 @@
 
 
-int PetscMatrixToMatlabMatrix(mxArray** pdataref,Mat matrix){
+int PetscMatrixToMatlabMatrix(mxArray** pdataref,Mat tmatrix){
 
 	int i,j,k;
@@ -31,5 +31,4 @@
 	/*output: */
 	mxArray* dataref=NULL;
-	mxArray* tdataref=NULL;
 	int    rows,cols;
 
@@ -50,5 +49,12 @@
 	int*    idxm=NULL;
 	int*    idxn=NULL;
+	Mat     matrix=NULL;
 
+	
+	/*First off, we need to transpose the matrix using the Petsc API. We tried using the transpose operation from 
+	 * Matlab, but this ends up creating issues with lost pointers and references: */
+	MatTranspose(tmatrix,MAT_INITIAL_MATRIX,&matrix);
+
+	/*Some needed information: */
 	MatGetType(matrix,&type);
 	MatGetSize(matrix,&rows,&cols);
@@ -128,16 +134,14 @@
 
 		dataref = mxCreateDoubleMatrix(0,0,mxREAL);
-		mxSetM(dataref,rows);
-		mxSetN(dataref,cols);
+		mxSetM(dataref,cols);
+		mxSetN(dataref,rows);
 		mxSetPr(dataref,(double*)matrix_ptr);	
 	}
 
-
-	/*Transpose matrcol_indes: */
-	mexCallMATLAB(1,&tdataref,1,&dataref, "transpose");
-
+	/*Free ressources:*/
+	MatFree(&matrix);
 
 	/*Assign output pointers: */
-	*pdataref=tdataref;
+	*pdataref=dataref;
 
 	return 1;
