Index: /branches/eam_branches/psModules.20100523/src/camera/pmFPA.c
===================================================================
--- /branches/eam_branches/psModules.20100523/src/camera/pmFPA.c	(revision 28077)
+++ /branches/eam_branches/psModules.20100523/src/camera/pmFPA.c	(revision 28078)
@@ -10,4 +10,5 @@
 
 #include "pmHDU.h"
+#include "pmHDUUtils.h"
 #include "pmFPA.h"
 #include "pmFPALevel.h"
@@ -198,15 +199,22 @@
         pmReadoutFreeData(cell->readouts->data[i]);
     }
-    if (cell->hdu) {
-        psFree(cell->hdu->images);
-        psFree(cell->hdu->variances);
-        psFree(cell->hdu->masks);
-        // psFree(cell->hdu->header);
-
-        cell->hdu->images = NULL;
-        cell->hdu->variances = NULL;
-        cell->hdu->masks = NULL;
-        // cell->hdu->header = NULL;
-    }
+    pmHDU *hdu = pmHDUFromCell(cell);
+    if (hdu) {
+        psFree(hdu->images);
+        psFree(hdu->variances);
+        psFree(hdu->masks);
+    }      
+
+    // if (cell->hdu) {
+    //     psFree(cell->hdu->images);
+    //     psFree(cell->hdu->variances);
+    //     psFree(cell->hdu->masks);
+    //     // psFree(cell->hdu->header);
+    // 
+    //     cell->hdu->images = NULL;
+    //     cell->hdu->variances = NULL;
+    //     cell->hdu->masks = NULL;
+    //     // cell->hdu->header = NULL;
+    // }
 }
 
@@ -220,15 +228,22 @@
         pmCellFreeData(chip->cells->data[i]);
     }
-    if (chip->hdu) {
-        psFree(chip->hdu->images);
-        psFree(chip->hdu->variances);
-        psFree(chip->hdu->masks);
-        // psFree(chip->hdu->header);
-
-        chip->hdu->images = NULL;
-        chip->hdu->variances = NULL;
-        chip->hdu->masks = NULL;
-        // chip->hdu->header = NULL;
-    }
+    pmHDU *hdu = pmHDUFromChip(chip);
+    if (hdu) {
+        psFree(hdu->images);
+        psFree(hdu->variances);
+        psFree(hdu->masks);
+    }      
+
+    // if (chip->hdu) {
+    //     psFree(chip->hdu->images);
+    //     psFree(chip->hdu->variances);
+    //     psFree(chip->hdu->masks);
+    //     // psFree(chip->hdu->header);
+    // 
+    //     chip->hdu->images = NULL;
+    //     chip->hdu->variances = NULL;
+    //     chip->hdu->masks = NULL;
+    //     // chip->hdu->header = NULL;
+    // }
 }
 
@@ -242,15 +257,22 @@
         pmChipFreeData(fpa->chips->data[i]);
     }
-    if (fpa->hdu) {
-        psFree(fpa->hdu->images);
-        psFree(fpa->hdu->variances);
-        psFree(fpa->hdu->masks);
-        // psFree(fpa->hdu->header);
-
-        fpa->hdu->images = NULL;
-        fpa->hdu->variances = NULL;
-        fpa->hdu->masks = NULL;
-        // fpa->hdu->header = NULL;
-    }
+    pmHDU *hdu = pmHDUFromFPA(fpa);
+    if (hdu) {
+        psFree(hdu->images);
+        psFree(hdu->variances);
+        psFree(hdu->masks);
+    }      
+
+    // if (fpa->hdu) {
+    //     psFree(fpa->hdu->images);
+    //     psFree(fpa->hdu->variances);
+    //     psFree(fpa->hdu->masks);
+    //     // psFree(fpa->hdu->header);
+    // 
+    //     fpa->hdu->images = NULL;
+    //     fpa->hdu->variances = NULL;
+    //     fpa->hdu->masks = NULL;
+    //     // fpa->hdu->header = NULL;
+    // }
 }
 
