Index: trunk/psModules/src/camera/pmFPAfileDefine.c
===================================================================
--- trunk/psModules/src/camera/pmFPAfileDefine.c	(revision 20355)
+++ trunk/psModules/src/camera/pmFPAfileDefine.c	(revision 20400)
@@ -940,5 +940,5 @@
         psTrace ("pmFPAfile", 5, "requiring use of detrend database source\n");
         // don't free the file here: it is left on config->files
-        // to be used optionally by pmFPAfileDefineFromDetDB (or others)
+        // to be used optionally by pmFPAfileDefineFromDetDB (or others) XXX potentially free the fpa...
         if (success) {
             *success = true;
@@ -1009,4 +1009,9 @@
             return NULL;
         }
+
+	// XXX A TEST: this is a provisional fpa until we read the first header for this pmFPAfile
+	// we are going to replace it when we determine the true file.  blow this away here...
+	psFree (file->fpa);
+	file->fpa = NULL;
     }
 
Index: trunk/psModules/src/camera/pmFPAfileIO.c
===================================================================
--- trunk/psModules/src/camera/pmFPAfileIO.c	(revision 20355)
+++ trunk/psModules/src/camera/pmFPAfileIO.c	(revision 20400)
@@ -781,5 +781,7 @@
           // determine camera if not specified already
           // XXX can I actually reach this with camera not specified??
-          file->format = pmConfigCameraFormatFromHeader (NULL, NULL, config, phu, true);
+	  psMetadata *camera = NULL;
+	  psString formatName = NULL;
+          file->format = pmConfigCameraFormatFromHeader (&camera, &formatName, config, phu, true);
           if (!file->format) {
             psError(PS_ERR_IO, false, "Failed to read CCD format from %s\n", file->filename);
@@ -788,4 +790,18 @@
           }
           psFree(phu);
+
+	  pmFPA *newFPA = pmFPAConstruct (camera, formatName);
+	  if (!newFPA) {
+	      psError(PS_ERR_IO, false, "Failed to construct FPA from %s for %s", file->filename, formatName);
+	      psFree(camera);
+	      psFree(formatName);
+	      return NULL;
+	  }
+	  psFree(camera);
+	  psFree(formatName);
+
+	  // XXX this is really dangerous...
+	  psFree (file->fpa);
+	  file->fpa = newFPA;
         }
 
