Index: /trunk/Ohana/src/libfits/header/F_read_H.c
===================================================================
--- /trunk/Ohana/src/libfits/header/F_read_H.c	(revision 39393)
+++ /trunk/Ohana/src/libfits/header/F_read_H.c	(revision 39394)
@@ -29,5 +29,5 @@
   header[0].datasize = 0;
   done = FALSE;
-  ALLOCATE (header[0].buffer, char, 1);
+  ALLOCATE (header[0].buffer, char, FT_RECORD_SIZE);
 
   for (i = 0; !done; i++) {
Index: /trunk/Ohana/src/libfits/include/gfitsio.h
===================================================================
--- /trunk/Ohana/src/libfits/include/gfitsio.h	(revision 39393)
+++ /trunk/Ohana/src/libfits/include/gfitsio.h	(revision 39394)
@@ -286,4 +286,5 @@
 int gfits_dump_cmp_table (FTable *table, char *message);
 
+void myMemset (char *ptr, int value, size_t N);
 
 #endif /* FITSIO */
Index: /trunk/Ohana/src/libfits/table/F_set_column.c
===================================================================
--- /trunk/Ohana/src/libfits/table/F_set_column.c	(revision 39393)
+++ /trunk/Ohana/src/libfits/table/F_set_column.c	(revision 39394)
@@ -2,4 +2,5 @@
 # include <gfitsio.h>
 # define OHANA_MEMCHECK 0
+# define CHECK_MEMBLOCKS 0
 
 # define SWAP_NONE 
@@ -45,4 +46,10 @@
 # endif
 
+  memset (tlabel,  0, 256);
+  memset (field,   0, 256);
+  memset (format,  0, 256);
+  memset (type,    0, 64);
+  memset (tmpline, 0, 64);
+
   if (label == (char *) NULL) return (FALSE);
   if (label[0] == 0) return (FALSE);
@@ -95,9 +102,25 @@
   }
 
+  // ohana_memcheck (TRUE);
+
   /* make duplicate of data with correct type
      byte swap and Bzero/Bscale */
   ALLOCATE (array, char, Nbytes*Nval*Nrow);
+  if (CHECK_MEMBLOCKS) {
+    OhanaMemblock *ref = (OhanaMemblock *) array - 1;
+    fprintf (stderr, "ref: "OFF_T_FMT", array: "OFF_T_FMT"\n", (off_t) ref, (off_t) array);
+    if (!ref->nextBlock && !ref->prevBlock) abort();
+  }
+
   Pin = data;
   Pout = array;
+
+  // ohana_memcheck (TRUE);
+
+  if (CHECK_MEMBLOCKS) {
+    OhanaMemblock *ref = (OhanaMemblock *) array - 1;
+    fprintf (stderr, "ref: "OFF_T_FMT", array: "OFF_T_FMT"\n", (off_t) ref, (off_t) array);
+    if (!ref->nextBlock && !ref->prevBlock) abort();
+  }
 
   // does it makes sense to scale 'char' data?
@@ -187,4 +210,10 @@
   }
 
+  if (CHECK_MEMBLOCKS) {
+    OhanaMemblock *ref = (OhanaMemblock *) array - 1;
+    fprintf (stderr, "ref: "OFF_T_FMT", array: "OFF_T_FMT"\n", (off_t) ref, (off_t) array);
+    if (!ref->nextBlock && !ref->prevBlock) abort();
+  }
+
   /* check array space */
   if (Nx*Ny < Nx*(Nrow - 1) + Nstart + Nval*Nbytes) {
@@ -193,4 +222,5 @@
   }
 
+  // ohana_memcheck (TRUE);
   /* insert bytes from array into appropriate section of buffer */
   Pout = table[0].buffer + Nstart;
@@ -206,7 +236,12 @@
   myAssert (   type[63]  == 0x7f, "oops");
   myAssert (tmpline[63]  == 0x7f, "oops");
-
- ohana_memcheck (TRUE);
-# endif
+# endif
+  // ohana_memcheck (TRUE);
+
+  if (CHECK_MEMBLOCKS) {
+    OhanaMemblock *ref = (OhanaMemblock *) array - 1;
+    fprintf (stderr, "ref: "OFF_T_FMT", array: "OFF_T_FMT"\n", (off_t) ref, (off_t) array);
+    if (!ref->nextBlock && !ref->prevBlock) abort();
+  }
 
   free (array);
Index: /trunk/Ohana/src/libfits/table/F_table_format.c
===================================================================
--- /trunk/Ohana/src/libfits/table/F_table_format.c	(revision 39393)
+++ /trunk/Ohana/src/libfits/table/F_table_format.c	(revision 39394)
@@ -115,5 +115,5 @@
   // XXXX : check usage:
   myAbort ("need to check length");
-  sprintf (format, "%%-%s%c", Size, Type);
+  // sprintf (format, "%%-%s%c", Size, Type);
 
   return (TRUE);
Index: /trunk/Ohana/src/libfits/table/F_table_row.c
===================================================================
--- /trunk/Ohana/src/libfits/table/F_table_row.c	(revision 39393)
+++ /trunk/Ohana/src/libfits/table/F_table_row.c	(revision 39394)
@@ -31,5 +31,5 @@
   
   memcpy (&table[0].buffer[Nstart], data, Nbytes*Nrow);
-  memset (&table[0].buffer[Nx*Ny], ' ', nbytes - Nx*Ny);
+  myMemset (&table[0].buffer[Nx*Ny], ' ', nbytes - Nx*Ny);
   return (TRUE);
 }
