Index: /issm/trunk-jpl/src/c/matlab/io/FetchMatlabData.cpp
===================================================================
--- /issm/trunk-jpl/src/c/matlab/io/FetchMatlabData.cpp	(revision 12593)
+++ /issm/trunk-jpl/src/c/matlab/io/FetchMatlabData.cpp	(revision 12594)
@@ -27,5 +27,9 @@
 		outmatrix=NULL;
 	}
-	else if(mxIsClass(dataref,"double") || mxIsClass(dataref,"single") || mxIsClass(dataref,"int16")){
+	else if( mxIsClass(dataref,"double") || 
+				mxIsClass(dataref,"single") || 
+				mxIsClass(dataref,"int16") || 
+				mxIsClass(dataref,"int8") || 
+				mxIsClass(dataref,"uint8")){
 		/*Check dataref is not pointing to NaN: */
 		if ( mxIsNaN(*(mxGetPr(dataref))) && (mxGetM(dataref)==1) && (mxGetN(dataref)==1) ){
@@ -390,5 +394,5 @@
 	/*Assign output pointers:*/
 	*pstring=outstring;
-}
+}/*}}}*/
 /*FUNCTION FetchData(char** pmatrix,int* pnumel,int* pndims,int** psize,const mxArray* dataref){{{*/
 void FetchData(char** pmatrix,int* pnumel,int* pndims,int** psize,const mxArray* dataref){
Index: /issm/trunk-jpl/src/c/matlab/io/MatlabMatrixToDoubleMatrix.cpp
===================================================================
--- /issm/trunk-jpl/src/c/matlab/io/MatlabMatrixToDoubleMatrix.cpp	(revision 12593)
+++ /issm/trunk-jpl/src/c/matlab/io/MatlabMatrixToDoubleMatrix.cpp	(revision 12594)
@@ -2,5 +2,4 @@
  * \brief: convert a sparse or dense matlab matrix to a double* pointer
  */
-
 
 #ifdef HAVE_CONFIG_H
@@ -10,8 +9,6 @@
 #endif
 
-
 /*Matlab includes: */
 #include "mex.h"
-
 #include "../../shared/shared.h"
 
@@ -19,7 +16,4 @@
 
 	int        i,j,count,rows,cols;
-	double    *pmxdoublematrix = NULL;
-	float     *pmxsinglematrix = NULL;
-	short int *pmxint16matrix  = NULL;
 
 	/*output: */
@@ -34,5 +28,5 @@
 
 		/*Dealing with sparse matrix: recover size first: */
-		pmxdoublematrix=(double*)mxGetPr(mxmatrix);
+		double* pmxmatrix=(double*)mxGetPr(mxmatrix);
 		rows=mxGetM(mxmatrix);
 		cols=mxGetN(mxmatrix);
@@ -49,5 +43,5 @@
 			for(i=0;i<cols;i++){
 				for(j=0;j<(jc[i+1]-jc[i]);j++){
-					matrix[rows*ir[count]+i]=pmxdoublematrix[count];
+					matrix[rows*ir[count]+i]=pmxmatrix[count];
 					count++;
 				}
@@ -58,5 +52,5 @@
 	else if(mxIsClass(mxmatrix,"double")){
 		/*Dealing with dense matrix: recover pointer and size: */
-		pmxdoublematrix=(double*)mxGetPr(mxmatrix);
+		double* pmxmatrix=(double*)mxGetPr(mxmatrix);
 		rows=mxGetM(mxmatrix);
 		cols=mxGetN(mxmatrix);
@@ -68,5 +62,5 @@
 			for(i=0;i<rows;i++){
 				for(j=0;j<cols;j++){
-					matrix[cols*i+j]=(double)pmxdoublematrix[rows*j+i];
+					matrix[cols*i+j]=(double)pmxmatrix[rows*j+i];
 				}
 			}
@@ -75,5 +69,5 @@
 	else if(mxIsClass(mxmatrix,"single")){
 		/*Dealing with dense matrix: recover pointer and size: */
-		pmxsinglematrix=(float*)mxGetPr(mxmatrix);
+		float *pmxmatrix=(float*)mxGetPr(mxmatrix);
 		rows=mxGetM(mxmatrix);
 		cols=mxGetN(mxmatrix);
@@ -85,5 +79,5 @@
 			for(i=0;i<rows;i++){
 				for(j=0;j<cols;j++){
-					matrix[cols*i+j]=(double)pmxsinglematrix[rows*j+i];
+					matrix[cols*i+j]=(double)pmxmatrix[rows*j+i];
 				}
 			}
@@ -92,5 +86,5 @@
 	else if(mxIsClass(mxmatrix,"int16")){
 		/*Dealing with dense matrix: recover pointer and size: */
-		pmxint16matrix=(short*)mxGetPr(mxmatrix);
+		short int *pmxmatrix=(short*)mxGetPr(mxmatrix);
 		rows=mxGetM(mxmatrix);
 		cols=mxGetN(mxmatrix);
@@ -102,5 +96,22 @@
 			for(i=0;i<rows;i++){
 				for(j=0;j<cols;j++){
-					matrix[cols*i+j]=(double)pmxint16matrix[rows*j+i];
+					matrix[cols*i+j]=(double)pmxmatrix[rows*j+i];
+				}
+			}
+		}
+	}
+	else if(mxIsClass(mxmatrix,"uint8")){
+		/*Dealing with dense matrix: recover pointer and size: */
+		char *pmxmatrix=(char*)mxGetPr(mxmatrix);
+		rows=mxGetM(mxmatrix);
+		cols=mxGetN(mxmatrix);
+
+		/*Create serial matrix: */
+		if(rows*cols){
+			matrix=xNewZeroInit<double>(rows*cols);
+
+			for(i=0;i<rows;i++){
+				for(j=0;j<cols;j++){
+					matrix[cols*i+j]=(double)pmxmatrix[rows*j+i];
 				}
 			}
