Index: trunk/Ohana/src/libfits/header/F_copy_H.c
===================================================================
--- trunk/Ohana/src/libfits/header/F_copy_H.c	(revision 17902)
+++ trunk/Ohana/src/libfits/header/F_copy_H.c	(revision 17903)
@@ -23,4 +23,5 @@
   out[0].bscale = in[0].bscale;
 
+  if (out[0].buffer != NULL) free (out[0].buffer);
   ALLOCATE (out[0].buffer, char, out[0].size);
   
Index: trunk/Ohana/src/libfits/matrix/F_copy_M.c
===================================================================
--- trunk/Ohana/src/libfits/matrix/F_copy_M.c	(revision 17902)
+++ trunk/Ohana/src/libfits/matrix/F_copy_M.c	(revision 17903)
@@ -16,4 +16,5 @@
     matrix2[0].Naxis[i] = matrix1[0].Naxis[i];
 
+  if (matrix2[0].buffer != NULL) free (matrix2[0].buffer);
   ALLOCATE (matrix2[0].buffer, char, matrix2[0].size);
   
Index: trunk/Ohana/src/libfits/matrix/F_create_M.c
===================================================================
--- trunk/Ohana/src/libfits/matrix/F_create_M.c	(revision 17902)
+++ trunk/Ohana/src/libfits/matrix/F_create_M.c	(revision 17903)
@@ -27,2 +27,3 @@
 }
 
+// XXX free buffer if non-null: need to double check for existing frees
Index: trunk/Ohana/src/opihi/cmd.data/spline_construct.c
===================================================================
--- trunk/Ohana/src/opihi/cmd.data/spline_construct.c	(revision 17902)
+++ trunk/Ohana/src/opihi/cmd.data/spline_construct.c	(revision 17903)
@@ -16,6 +16,6 @@
   if ((out = SelectBuffer (argv[2], ANYBUFFER, TRUE)) == NULL) return (FALSE);
 
+  // XXX move this to gfits_create_matrix
   free (out[0].matrix.buffer);
-  free (out[0].header.buffer);
   if ((in[0].file[0] != '*') && (in[0].file[0] != '(')) {
     sprintf (out[0].file, "*%s", in[0].file);
Index: trunk/Ohana/src/opihi/lib.shell/BufferOps.c
===================================================================
--- trunk/Ohana/src/opihi/lib.shell/BufferOps.c	(revision 17902)
+++ trunk/Ohana/src/opihi/lib.shell/BufferOps.c	(revision 17903)
@@ -122,6 +122,4 @@
 
 int CopyBuffer (Buffer *out, Buffer *in) {
-  free (out[0].matrix.buffer);
-  free (out[0].header.buffer);
   out[0].bitpix = in[0].bitpix;
   out[0].unsign = in[0].unsign;
