Index: /issm/trunk-jpl/src/c/shared/Alloc/xNewDelete.h
===================================================================
--- /issm/trunk-jpl/src/c/shared/Alloc/xNewDelete.h	(revision 12446)
+++ /issm/trunk-jpl/src/c/shared/Alloc/xNewDelete.h	(revision 12447)
@@ -59,11 +59,25 @@
 
 template <class T> 
-T* xReNew(T* old, unsigned int size) {
+T* xReNew(T* old, unsigned int old_size, unsigned int size) {
 #ifdef USE_CXX_MEMORY_MANAGMENT_FOR_NON_POD_TYPES
-  assert(old);
-  T* aT_p=xNew<T>(size);
-  for (unsigned int i=0; i<size;++i) 
-    aT_p[i]=old[i];
-  xDelete<T>(old);
+  T* aT_p=NULL;
+  if (!old) { // no old memory
+    if (size)  
+      aT_p=xNew<T>(size);
+  }
+  else { // have old memory
+    if (!size)  // but 0 size
+      xDelete<T>(old);
+    else { // non-zero size
+      if (size>old_size) { // do something only if it is bigger
+	aT_p=xNew<T>(size);
+	for (unsigned int i=0; i<old_size;++i) 
+	  aT_p[i]=old[i]; // copy the items
+	xDelete<T>(old);
+      }
+      else // size is equal or less than old size
+	aT_p=old; // do nothing
+    }
+  }
   return aT_p;
 #else 
Index: /issm/trunk-jpl/src/c/shared/TriMesh/TriMeshUtils.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/TriMesh/TriMeshUtils.cpp	(revision 12446)
+++ /issm/trunk-jpl/src/c/shared/TriMesh/TriMeshUtils.cpp	(revision 12447)
@@ -66,5 +66,5 @@
 				else{
 					/*Reallocate another max_number_elements slots in the GridElements: */
-					GridElementsRealloc=xReNew<int>(GridElements,(current_size+max_number_elements));
+					GridElementsRealloc=xReNew<int>(GridElements,current_size,(current_size+max_number_elements));
 					if (!GridElementsRealloc){
 						noerr=0;
