Index: /issm/trunk/src/mex/InternalFront/InternalFront.cpp
===================================================================
--- /issm/trunk/src/mex/InternalFront/InternalFront.cpp	(revision 7304)
+++ /issm/trunk/src/mex/InternalFront/InternalFront.cpp	(revision 7305)
@@ -16,6 +16,7 @@
 	int     N,M;
 	int     numberofsegments;
-	int     id,node1,node2;
+	int     id,node1,node2,temp_node;
 	int     i,j,ii,jj;
+	int     i0,i1;
 
 	/*Boot module: */
@@ -60,7 +61,19 @@
 						if(node1==0){
 							node1=elements[(id-1)*3+ii];
+							i0=jj;
 						}
 						else{
-							node2=elements[(id-1)*3+ii]; break;
+							node2=elements[(id-1)*3+ii];
+							i1=jj;
+
+							/*Now, we have node1 and node2. Make sure they are in the trigonometric 
+							 * orientation, so that the normals points to the right direction: */
+							if (!((i0==0 && i1==2) ||  (i0==1 && i1==0) || (i0==2 && i1==1))){
+								/*swap: */
+								temp_node=node2;
+								node2=node1;
+								node1=temp_node;
+							}
+							break;
 						}
 					}
@@ -77,6 +90,8 @@
 
 	/*Now that we know how many segments there is we can allocate the final matrix*/
-	front2=(double*)xmalloc(4*numberofsegments*sizeof(double));
-	for(i=0;i<4*numberofsegments;i++) front2[i]=(double)front[i];
+	if(numberofsegments){
+		front2=(double*)xmalloc(4*numberofsegments*sizeof(double));
+		for(i=0;i<4*numberofsegments;i++) front2[i]=(double)front[i];
+	}
 	xfree((void**)&front);
 
