Index: /trunk/Ohana/src/opihi/cmd.astro/cdensify.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.astro/cdensify.c	(revision 39232)
+++ /trunk/Ohana/src/opihi/cmd.astro/cdensify.c	(revision 39233)
@@ -84,5 +84,5 @@
   gfits_free_matrix (&bf[0].matrix);
   gfits_free_header (&bf[0].header);
-  CreateBuffer (bf, Nx, Ny, -32, 0.0, 1.0);
+  if (!CreateBuffer (bf, Nx, Ny, -32, 0.0, 1.0)) return FALSE;
   strcpy (bf[0].file, "(empty)");
   PutCoords (&newcoords, &bf[0].header);
Index: /trunk/Ohana/src/opihi/cmd.astro/cdhistogram.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.astro/cdhistogram.c	(revision 39232)
+++ /trunk/Ohana/src/opihi/cmd.astro/cdhistogram.c	(revision 39233)
@@ -101,5 +101,5 @@
   gfits_free_matrix (&bf[0].matrix);
   gfits_free_header (&bf[0].header);
-  CreateBuffer3D (bf, Nx, Ny, Nz, -32, 0.0, 1.0);
+  if (!CreateBuffer3D (bf, Nx, Ny, Nz, -32, 0.0, 1.0)) return FALSE;
   strcpy (bf[0].file, "(empty)");
   PutCoords (&newcoords, &bf[0].header);
Index: /trunk/Ohana/src/opihi/cmd.astro/fiximage.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.astro/fiximage.c	(revision 39232)
+++ /trunk/Ohana/src/opihi/cmd.astro/fiximage.c	(revision 39233)
@@ -26,5 +26,5 @@
   gfits_free_matrix (&mask[0].matrix);
   gfits_free_header (&mask[0].header);
-  CreateBuffer (mask, Nx, Ny, -32, 0.0, 1.0);
+  if (!CreateBuffer (mask, Nx, Ny, -32, 0.0, 1.0)) return FALSE;
   strcpy (mask[0].file, "(empty)");
   memset (mask[0].matrix.buffer, 0, Nx*Ny*sizeof(float));
Index: /trunk/Ohana/src/opihi/cmd.astro/getcoords.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.astro/getcoords.c	(revision 39232)
+++ /trunk/Ohana/src/opihi/cmd.astro/getcoords.c	(revision 39233)
@@ -73,9 +73,9 @@
   gfits_free_matrix (&outC1[0].matrix);
   gfits_free_header (&outC1[0].header);
-  CreateBuffer (outC1, Nx, Ny, -32, 1.0, 0.0);
+  if (!CreateBuffer (outC1, Nx, Ny, -32, 1.0, 0.0)) return FALSE;
 
   gfits_free_matrix (&outC2[0].matrix);
   gfits_free_header (&outC2[0].header);
-  CreateBuffer (outC2, Nx, Ny, -32, 1.0, 0.0);
+  if (!CreateBuffer (outC2, Nx, Ny, -32, 1.0, 0.0)) return FALSE;
 
   float *valC1 = (float *) outC1[0].matrix.buffer;
Index: /trunk/Ohana/src/opihi/cmd.astro/imfit.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.astro/imfit.c	(revision 39232)
+++ /trunk/Ohana/src/opihi/cmd.astro/imfit.c	(revision 39233)
@@ -141,5 +141,5 @@
 
     strcpy (out[0].file, "(empty)");
-    CreateBuffer (out, 2*nx, 2*ny, -32, 0.0, 1.0);
+    if (!CreateBuffer (out, 2*nx, 2*ny, -32, 0.0, 1.0)) return FALSE;
 
     /* four panels: 1) raw image. 2) fit  3) raw - fit   4) ?? */
Index: /trunk/Ohana/src/opihi/cmd.astro/shimage.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.astro/shimage.c	(revision 39232)
+++ /trunk/Ohana/src/opihi/cmd.astro/shimage.c	(revision 39233)
@@ -30,6 +30,6 @@
   int Ny = src[0].header.Naxis[1];
 
-  gfits_free_matrix (&FrIm[0].matrix); gfits_free_header (&FrIm[0].header); CreateBuffer (FrIm, Nx, Ny, -32, 1.0, 0.0);
-  gfits_free_matrix (&FiIm[0].matrix); gfits_free_header (&FiIm[0].header); CreateBuffer (FiIm, Nx, Ny, -32, 1.0, 0.0);
+  gfits_free_matrix (&FrIm[0].matrix); gfits_free_header (&FrIm[0].header); if (!CreateBuffer (FrIm, Nx, Ny, -32, 1.0, 0.0)) return FALSE;
+  gfits_free_matrix (&FiIm[0].matrix); gfits_free_header (&FiIm[0].header); if (!CreateBuffer (FiIm, Nx, Ny, -32, 1.0, 0.0)) return FALSE;
 
   // l=0 allocates space for a single value
Index: /trunk/Ohana/src/opihi/cmd.astro/vshimage.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.astro/vshimage.c	(revision 39232)
+++ /trunk/Ohana/src/opihi/cmd.astro/vshimage.c	(revision 39233)
@@ -32,8 +32,8 @@
   int Ny = src[0].header.Naxis[1];
 
-  gfits_free_matrix (&Rbim[0].matrix); gfits_free_header (&Rbim[0].header); CreateBuffer (Rbim, Nx, Ny, -32, 1.0, 0.0);
-  gfits_free_matrix (&Reim[0].matrix); gfits_free_header (&Reim[0].header); CreateBuffer (Reim, Nx, Ny, -32, 1.0, 0.0);
-  gfits_free_matrix (&Dbim[0].matrix); gfits_free_header (&Dbim[0].header); CreateBuffer (Dbim, Nx, Ny, -32, 1.0, 0.0);
-  gfits_free_matrix (&Deim[0].matrix); gfits_free_header (&Deim[0].header); CreateBuffer (Deim, Nx, Ny, -32, 1.0, 0.0);
+  gfits_free_matrix (&Rbim[0].matrix); gfits_free_header (&Rbim[0].header); if (!CreateBuffer (Rbim, Nx, Ny, -32, 1.0, 0.0)) return FALSE;
+  gfits_free_matrix (&Reim[0].matrix); gfits_free_header (&Reim[0].header); if (!CreateBuffer (Reim, Nx, Ny, -32, 1.0, 0.0)) return FALSE;
+  gfits_free_matrix (&Dbim[0].matrix); gfits_free_header (&Dbim[0].header); if (!CreateBuffer (Dbim, Nx, Ny, -32, 1.0, 0.0)) return FALSE;
+  gfits_free_matrix (&Deim[0].matrix); gfits_free_header (&Deim[0].header); if (!CreateBuffer (Deim, Nx, Ny, -32, 1.0, 0.0)) return FALSE;
 
   // l=0 allocates space for a single value
Index: /trunk/Ohana/src/opihi/cmd.data/densify.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/densify.c	(revision 39232)
+++ /trunk/Ohana/src/opihi/cmd.data/densify.c	(revision 39233)
@@ -96,5 +96,5 @@
   gfits_free_matrix (&bf[0].matrix);
   gfits_free_header (&bf[0].header);
-  CreateBuffer (bf, Nx, Ny, -32, 0.0, 1.0);
+  if (!CreateBuffer (bf, Nx, Ny, -32, 0.0, 1.0)) return FALSE;
   strcpy (bf[0].file, "(empty)");
   
Index: /trunk/Ohana/src/opihi/cmd.data/fft2d.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/fft2d.c	(revision 39232)
+++ /trunk/Ohana/src/opihi/cmd.data/fft2d.c	(revision 39233)
@@ -58,6 +58,6 @@
   
   /* fix up output headers (real) & allocate data buffer */
-  CreateBuffer (Ore, Nx, Ny, -32, 0.0, 1.0);
-  CreateBuffer (Oim, Nx, Ny, -32, 0.0, 1.0);
+  if (!CreateBuffer (Ore, Nx, Ny, -32, 0.0, 1.0)) return FALSE;
+  if (!CreateBuffer (Oim, Nx, Ny, -32, 0.0, 1.0)) return FALSE;
 
   gfits_copy_header (&Ire[0].header, &Ore[0].header);
Index: /trunk/Ohana/src/opihi/cmd.data/gridify.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/gridify.c	(revision 39232)
+++ /trunk/Ohana/src/opihi/cmd.data/gridify.c	(revision 39233)
@@ -85,5 +85,5 @@
     gfits_free_matrix (&bf[0].matrix);
     gfits_free_header (&bf[0].header);
-    CreateBuffer (bf, Nx, Ny, -32, 0.0, 1.0);
+    if (!CreateBuffer (bf, Nx, Ny, -32, 0.0, 1.0)) return FALSE;
     strcpy (bf[0].file, "(empty)");
   }
@@ -111,5 +111,5 @@
     gfits_free_matrix (&ct[0].matrix);
     gfits_free_header (&ct[0].header);
-    CreateBuffer (ct, Nx, Ny, -32, 0.0, 1.0);
+    if (!CreateBuffer (ct, Nx, Ny, -32, 0.0, 1.0)) return FALSE;
     strcpy (ct[0].file, "(empty)");
 
Index: /trunk/Ohana/src/opihi/cmd.data/mcreate.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/mcreate.c	(revision 39232)
+++ /trunk/Ohana/src/opihi/cmd.data/mcreate.c	(revision 39233)
@@ -27,7 +27,7 @@
 
   if (Nz) {
-    CreateBuffer3D (buf, Nx, Ny, Nz, -32, 1.0, 0.0);
+    if (!CreateBuffer3D (buf, Nx, Ny, Nz, -32, 1.0, 0.0)) return FALSE;
   } else {
-    CreateBuffer (buf, Nx, Ny, -32, 1.0, 0.0);
+    if (!CreateBuffer (buf, Nx, Ny, -32, 1.0, 0.0)) return FALSE;
   }
   return (TRUE);
Index: /trunk/Ohana/src/opihi/cmd.data/medimage_commands.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/medimage_commands.c	(revision 39232)
+++ /trunk/Ohana/src/opihi/cmd.data/medimage_commands.c	(revision 39233)
@@ -82,5 +82,5 @@
   gfits_free_matrix (&output->matrix);
   gfits_free_header (&output->header);
-  CreateBuffer (output, Nx, Ny, -32, 0.0, 1.0);
+  if (!CreateBuffer (output, Nx, Ny, -32, 0.0, 1.0)) return FALSE;
 
   float *outvalue = (float *) output->matrix.buffer;
Index: /trunk/Ohana/src/opihi/cmd.data/mslice.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/mslice.c	(revision 39232)
+++ /trunk/Ohana/src/opihi/cmd.data/mslice.c	(revision 39233)
@@ -35,5 +35,5 @@
   gfits_free_matrix (&out[0].matrix);
   gfits_free_header (&out[0].header);
-  CreateBuffer (out, Nx, Ny, -32, 1.0, 0.0);
+  if (!CreateBuffer (out, Nx, Ny, -32, 1.0, 0.0)) return FALSE;
 
   float *inF  = (float *) in[0].matrix.buffer + plane*Nx*Ny;
Index: /trunk/Ohana/src/opihi/cmd.data/shift.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/shift.c	(revision 39232)
+++ /trunk/Ohana/src/opihi/cmd.data/shift.c	(revision 39233)
@@ -48,5 +48,5 @@
   gfits_free_matrix (&out[0].matrix);
   gfits_free_header (&out[0].header);
-  CreateBuffer (out, nx, ny, -32, 0.0, 1.0);
+  if (!CreateBuffer (out, nx, ny, -32, 0.0, 1.0)) return FALSE;
 
   DXin = (dx < 0) ? -dx : 0;
Index: /trunk/Ohana/src/opihi/cmd.data/squash3d.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/squash3d.c	(revision 39232)
+++ /trunk/Ohana/src/opihi/cmd.data/squash3d.c	(revision 39233)
@@ -46,5 +46,5 @@
 	int oNx = iNz;
 	int oNy = iNy;
-	CreateBuffer (tgt, oNx, oNy, -32, 0.0, 1.0);
+	if (!CreateBuffer (tgt, oNx, oNy, -32, 0.0, 1.0)) return FALSE;
 	float *oBuf  = (float *) tgt[0].matrix.buffer;
 
@@ -70,5 +70,5 @@
 	int oNx = iNx;
 	int oNy = iNz;
-	CreateBuffer (tgt, oNx, oNy, -32, 0.0, 1.0);
+	if (!CreateBuffer (tgt, oNx, oNy, -32, 0.0, 1.0)) return FALSE;
 	float *oBuf  = (float *) tgt[0].matrix.buffer;
 
@@ -94,5 +94,5 @@
 	int oNx = iNx;
 	int oNy = iNy;
-	CreateBuffer (tgt, oNx, oNy, -32, 0.0, 1.0);
+	if (!CreateBuffer (tgt, oNx, oNy, -32, 0.0, 1.0)) return FALSE;
 	float *oBuf  = (float *) tgt[0].matrix.buffer;
 
Index: /trunk/Ohana/src/opihi/cmd.data/tdhistogram.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/tdhistogram.c	(revision 39232)
+++ /trunk/Ohana/src/opihi/cmd.data/tdhistogram.c	(revision 39233)
@@ -140,5 +140,5 @@
     gfits_free_matrix (&bf[0].matrix);
     gfits_free_header (&bf[0].header);
-    CreateBuffer3D (bf, Nx, Ny, Nz, -32, 0.0, 1.0);
+    if (!CreateBuffer3D (bf, Nx, Ny, Nz, -32, 0.0, 1.0)) return FALSE;
     strcpy (bf[0].file, "(empty)");
 
Index: /trunk/Ohana/src/opihi/cmd.data/vgrid.c
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/vgrid.c	(revision 39232)
+++ /trunk/Ohana/src/opihi/cmd.data/vgrid.c	(revision 39233)
@@ -43,5 +43,5 @@
   gfits_free_matrix (&bf[0].matrix);
   gfits_free_header (&bf[0].header);
-  CreateBuffer (bf, Nx, Ny, -32, 0.0, 1.0);
+  if (!CreateBuffer (bf, Nx, Ny, -32, 0.0, 1.0)) return FALSE;
   strcpy (bf[0].file, "(empty)");
 
Index: /trunk/Ohana/src/opihi/dimm/camera_cmds.c
===================================================================
--- /trunk/Ohana/src/opihi/dimm/camera_cmds.c	(revision 39232)
+++ /trunk/Ohana/src/opihi/dimm/camera_cmds.c	(revision 39233)
@@ -107,5 +107,5 @@
     gfits_free_matrix (&buf[0].matrix);
     gfits_free_header (&buf[0].header);
-    CreateBuffer (buf, dx, dy, -32, 0.0, 1.0);
+    if (!CreateBuffer (buf, dx, dy, -32, 0.0, 1.0)) return FALSE;
     strcpy (buf[0].file, "(empty)");
 
Index: /trunk/Ohana/src/opihi/dvo/coordimage.c
===================================================================
--- /trunk/Ohana/src/opihi/dvo/coordimage.c	(revision 39232)
+++ /trunk/Ohana/src/opihi/dvo/coordimage.c	(revision 39233)
@@ -79,10 +79,10 @@
   gfits_free_matrix (&bufX[0].matrix);
   gfits_free_header (&bufX[0].header);
-  CreateBuffer (bufX, Nx, Ny, -32, 0.0, 1.0); // initialized to 0.0 here
+  if (!CreateBuffer (bufX, Nx, Ny, -32, 0.0, 1.0)) return FALSE; // initialized to 0.0 here
   strcpy (bufX[0].file, "(empty)");
 
   gfits_free_matrix (&bufY[0].matrix);
   gfits_free_header (&bufY[0].header);
-  CreateBuffer (bufY, Nx, Ny, -32, 0.0, 1.0); // initialized to 0.0 here
+  if (!CreateBuffer (bufY, Nx, Ny, -32, 0.0, 1.0)) return FALSE; // initialized to 0.0 here
   strcpy (bufY[0].file, "(empty)");
 
Index: /trunk/Ohana/src/opihi/dvo/coordmosaic.c
===================================================================
--- /trunk/Ohana/src/opihi/dvo/coordmosaic.c	(revision 39232)
+++ /trunk/Ohana/src/opihi/dvo/coordmosaic.c	(revision 39233)
@@ -88,10 +88,10 @@
   gfits_free_matrix (&bufX[0].matrix);
   gfits_free_header (&bufX[0].header);
-  CreateBuffer (bufX, Nx, Ny, -32, 0.0, 1.0); // initialized to 0.0 here
+  if (!CreateBuffer (bufX, Nx, Ny, -32, 0.0, 1.0)) return FALSE; // initialized to 0.0 here
   strcpy (bufX[0].file, "(empty)");
 
   gfits_free_matrix (&bufY[0].matrix);
   gfits_free_header (&bufY[0].header);
-  CreateBuffer (bufY, Nx, Ny, -32, 0.0, 1.0); // initialized to 0.0 here
+  if (!CreateBuffer (bufY, Nx, Ny, -32, 0.0, 1.0)) return FALSE; // initialized to 0.0 here
   strcpy (bufY[0].file, "(empty)");
 
Index: /trunk/Ohana/src/opihi/dvo/fitcolors.c
===================================================================
--- /trunk/Ohana/src/opihi/dvo/fitcolors.c	(revision 39232)
+++ /trunk/Ohana/src/opihi/dvo/fitcolors.c	(revision 39233)
@@ -145,5 +145,5 @@
   gfits_free_matrix (&buf[0].matrix);
   gfits_free_header (&buf[0].header);
-  CreateBuffer (buf, NP, NP, -32, 0.0, 1.0);
+  if (!CreateBuffer (buf, NP, NP, -32, 0.0, 1.0)) return FALSE;
   strcpy (buf[0].file, "(empty)");
 
Index: /trunk/Ohana/src/opihi/dvo/imphot.c
===================================================================
--- /trunk/Ohana/src/opihi/dvo/imphot.c	(revision 39232)
+++ /trunk/Ohana/src/opihi/dvo/imphot.c	(revision 39233)
@@ -36,5 +36,5 @@
   if (GreyScale) {
     if ((buf = SelectBuffer (bufname, ANYBUFFER, TRUE)) == NULL) return (FALSE);
-    CreateBuffer (buf, 100, 200, -32, 0.0, 1.0);
+    if (!CreateBuffer (buf, 100, 200, -32, 0.0, 1.0)) return FALSE;
   }
 
Index: /trunk/Ohana/src/opihi/dvo/objectcoverage.c
===================================================================
--- /trunk/Ohana/src/opihi/dvo/objectcoverage.c	(revision 39232)
+++ /trunk/Ohana/src/opihi/dvo/objectcoverage.c	(revision 39233)
@@ -144,5 +144,5 @@
   gfits_free_matrix (&buf[0].matrix);
   gfits_free_header (&buf[0].header);
-  CreateBuffer (buf, Nx, Ny, -32, 0.0, 1.0);
+  if (!CreateBuffer (buf, Nx, Ny, -32, 0.0, 1.0)) return FALSE;
   strcpy (buf[0].file, "(empty)");
 
Index: /trunk/Ohana/src/opihi/dvo/skycoverage.c
===================================================================
--- /trunk/Ohana/src/opihi/dvo/skycoverage.c	(revision 39232)
+++ /trunk/Ohana/src/opihi/dvo/skycoverage.c	(revision 39233)
@@ -201,5 +201,5 @@
   gfits_free_matrix (&buf[0].matrix);
   gfits_free_header (&buf[0].header);
-  CreateBuffer (buf, Nx, Ny, -32, 0.0, 1.0);
+  if (!CreateBuffer (buf, Nx, Ny, -32, 0.0, 1.0)) return FALSE;
   strcpy (buf[0].file, "(empty)");
 
Index: /trunk/Ohana/src/opihi/lib.shell/BufferOps.c
===================================================================
--- /trunk/Ohana/src/opihi/lib.shell/BufferOps.c	(revision 39232)
+++ /trunk/Ohana/src/opihi/lib.shell/BufferOps.c	(revision 39233)
@@ -92,9 +92,12 @@
   gfits_free_matrix (&buf[0].matrix);
   gfits_free_header (&buf[0].header);
-  CreateBuffer (buf, Nx, Ny, bitpix, bzero, bscale);
+  if (!CreateBuffer (buf, Nx, Ny, bitpix, bzero, bscale)) return FALSE;
   return TRUE;
 }
 
 int CreateBuffer (Buffer *buf, int Nx, int Ny, int bitpix, float bzero, float bscale) {
+
+  if (Nx < 0) { gprint (GP_ERR, "invalid negative matrix size Nx : %d\n", Nx);  return FALSE; }
+  if (Ny < 0) { gprint (GP_ERR, "invalid negative matrix size Ny : %d\n", Ny);  return FALSE; }
 
   /* store the default output values */
@@ -123,4 +126,8 @@
 // buffer[x + Nx*y + Nx*Ny*z + ...]
 int CreateBuffer3D (Buffer *buf, int Nx, int Ny, int Nz, int bitpix, float bzero, float bscale) {
+
+  if (Nx < 0) { gprint (GP_ERR, "invalid negative matrix size Nx : %d\n", Nx);  return FALSE; }
+  if (Ny < 0) { gprint (GP_ERR, "invalid negative matrix size Ny : %d\n", Ny);  return FALSE; }
+  if (Nz < 0) { gprint (GP_ERR, "invalid negative matrix size Nz : %d\n", Nz);  return FALSE; }
 
   /* store the default output values */
