Index: /trunk/Ohana/src/libohana/include/ohana.h
===================================================================
--- /trunk/Ohana/src/libohana/include/ohana.h	(revision 3345)
+++ /trunk/Ohana/src/libohana/include/ohana.h	(revision 3346)
@@ -76,17 +76,20 @@
 # ifndef ALLOCATE
 # define ALLOCATE(X,T,S)  \
-  X=(T *)malloc((unsigned) (MAX(((S)*sizeof(T)),1)));\
-  if(X==NULL) \
-    { \
-      fprintf(stderr,"failed to malloc X\n");\
-        exit (10);\
-    } 
+  X = (T *) malloc ((unsigned) (MAX(((S)*sizeof(T)),1)));\
+  if (X == NULL) { \
+    fprintf(stderr,"failed malloc at __LINE__ in __FILE__\n");\
+    exit (10); } 
 # define REALLOCATE(X,T,S) \
-  X=(T *)realloc(X,(unsigned) (MAX(((S)*sizeof(T)),1))); \
-  if(X==NULL) \
-    { \
-       fprintf(stderr,"failed to realloc X\n"); \
-       exit (10); \
-    }
+  X = (T *) realloc(X,(unsigned) (MAX(((S)*sizeof(T)),1))); \
+  if (X == NULL) { \
+    fprintf(stderr,"failed realloc at __LINE__ in __FILE__\n"); \
+    exit (10); }
+# define CHECK_REALLOCATE(X,T,S,N,D) \
+  if ((N) >= (S)) { \
+    S += D; \
+    X = (T *) realloc (X,(unsigned) (MAX(((S)*sizeof(T)),1))); \
+    if (X == NULL) { \
+      fprintf(stderr,"failed to realloc X __LINE__ in __FILE__\n"); \
+      exit (10); } }
 # endif /* ALLOCATE */
 
