Index: /branches/rel10_ifa/psModules/src/astrom/pmFPAConstruct.c
===================================================================
--- /branches/rel10_ifa/psModules/src/astrom/pmFPAConstruct.c	(revision 6588)
+++ /branches/rel10_ifa/psModules/src/astrom/pmFPAConstruct.c	(revision 6589)
@@ -24,6 +24,6 @@
 
     psMetadata *cellData = psMetadataLookupMD(&status, cells, cellName); // The data for the particular cell
-    if (! status) {
-        psError(PS_ERR_IO, false, "Unable to find specs for cell %s: ignored\n", cellName);
+    if (!status || !cellData) {
+        psLogMsg(__func__, PS_LOG_WARN, "Unable to find specs for cell %s: ignored\n", cellName);
     }
 
@@ -244,11 +244,15 @@
             psString cellName = values->data[i]; // The name of the cell
             pmChip *chip = findChip(fpa, chipName); // The chip we're looking for
+            if (!chip) {
+                psLogMsg(__func__, PS_LOG_WARN, "Unable to find chip %s in fpa --- ignored.\n", chipName);
+                continue;
+            }
             pmCell *cell = findCell(chip, cellName); // The cell we're looking for
+            if (!cell) {
+                psLogMsg(__func__, PS_LOG_WARN, "Unable to find cell %s in chip %s --- ignored.\n", cellName,
+                         chipName);
+                continue;
+            }
             psMetadata *cellData = getCellData(format, cellName); // Data for this cell
-            if (! cellData) {
-                psLogMsg(__func__, PS_LOG_WARN, "Unable to find data for %s in CELLS --- ignored.\n",
-                         cellName);
-                continue;
-            }
 
             // Have already plugged in the PHU
@@ -263,4 +267,5 @@
             pmConceptsReadCell(cell, PM_CONCEPT_SOURCE_CAMERA | PM_CONCEPT_SOURCE_DEFAULTS, NULL);
         }
+        return true;
     }
 
@@ -291,14 +296,18 @@
                 psString cellName = values->data[i]; // The name of the cell
                 pmChip *chip = findChip(fpa, chipName); // The chip we're looking for
+                if (!chip) {
+                    psLogMsg(__func__, PS_LOG_WARN, "Unable to find chip %s in FPA --- ignored.\n", chipName);
+                    continue;
+                }
                 pmCell *cell = findCell(chip, cellName); // The cell we're looking for
+                if (!cell) {
+                    psLogMsg(__func__, PS_LOG_WARN, "Unable to find cell %s in chip %s --- ignored\n",
+                             cellName, chipName);
+                    continue;
+                }
                 psMetadata *cellData = getCellData(format, cellName); // Data for this cell
-                if (! cellData) {
-                    psLogMsg(__func__, PS_LOG_WARN, "Unable to find data for %s in CELLS --- ignored.\n",
-                             cellName);
-                    continue;
-                }
 
                 // Put in the extension
-                if (chip->hdu) {
+                if (chip->hdu && chip->hdu != hdu) {
                     psLogMsg(__func__, PS_LOG_WARN, "Overwriting HDU in chip %s\n", chipName);
                     psFree(chip->hdu);  // Make way!
@@ -324,4 +333,8 @@
                 chipName = chipNameFromHeader(formatSpec, phu);
                 chip = findChip(fpa, chipName);
+                if (!chip) {
+                    psLogMsg(__func__, PS_LOG_WARN, "Unable to find chip %s in FPA --- ignored.\n", chipName);
+                    continue;
+                }
             }
             for (int i = 0; i < names->n; i++) {
@@ -333,10 +346,20 @@
                     cellName = cellType;
                     chip = findChip(fpa, chipName);
+                    if (! chip) {
+                        psLogMsg(__func__, PS_LOG_WARN, "Unable to find chip %s in FPA --- ignored.\n",
+                                 chipName);
+                        continue;
+                    }
                 } else {
                     // We've got cellName:cellType and the chipName comes from before
                     cellName = names->data[i];
                 }
+                pmCell *cell = findCell(chip, cellName); // The cell we're looking for
+                if (!cell) {
+                    psLogMsg(__func__, PS_LOG_WARN, "Unable to find cell %s in chip %s --- ignored.\n",
+                             cellName, chipName);
+                    continue;
+                }
                 psMetadata *cellData = getCellData(format, cellType); // Data for this cell
-                pmCell *cell = findCell(chip, cellName); // The cell we're looking for
 
                 // Put in the extension
