Index: /trunk/psModules/src/camera/pmFPA.c
===================================================================
--- /trunk/psModules/src/camera/pmFPA.c	(revision 42783)
+++ /trunk/psModules/src/camera/pmFPA.c	(revision 42784)
@@ -53,7 +53,7 @@
     }
     psTrace("psModules.camera", 9, "Freeing cell %zd\n", (size_t)cell);
+
     pmCellFreeReadouts(cell);
     psFree(cell->readouts);
-
     psFree(cell->concepts);
     psFree(cell->analysis);
@@ -166,4 +166,5 @@
     psFree(readout->variance);
     psFree(readout->covariance);
+    psFree(readout->analysis);
     psFree(readout->bias);
 
@@ -173,7 +174,7 @@
     readout->variance = NULL;
     readout->covariance = NULL;
+    readout->analysis = NULL;
     readout->mask = NULL;
-
-    readout->bias = psListAlloc(NULL);
+    readout->bias = NULL;
 
     readout->col0 = 0;
Index: /trunk/psModules/src/camera/pmFPAConstruct.c
===================================================================
--- /trunk/psModules/src/camera/pmFPAConstruct.c	(revision 42783)
+++ /trunk/psModules/src/camera/pmFPAConstruct.c	(revision 42784)
@@ -52,4 +52,14 @@
 
 // Parse a list of first:second:third pairs in a string
+// EAM : this function takes an input 'string' and attempts to parse out
+// groups of the form FIRST:SECOND:THIRD into the arrays (first, second, third).
+
+// The input string may have multiple entries of this form separated by spaces, commas, or
+// semi-colons.  The number of arrays which are supplied must match the string format or
+// an error will be raised.
+
+// e.g., the string could be CHIP:CELL:TYPE in which case all three arrays must exist
+// or, the string could be CHIP:CELL only, in which case the array 'third' must be NULL
+ 
 static int parseContent(psArray **first, // Array of the first values
                          psArray **second, // Array of the second values
@@ -83,4 +93,8 @@
     while ((value = psListGetAndIncrement(valuesIter))) {
         psArray *fst = psStringSplitArray(value, ":", true); // First, second, third
+	if (fst->n != numArrays) {
+	  psError(PS_ERR_BAD_PARAMETER_VALUE, false, "string %s does not match expected format (%ld colon-separated items supplied, %d expected)", value, fst->n, numArrays);
+	  return 0;
+	}
         switch (numArrays) {
           case 3:
@@ -1126,5 +1140,5 @@
     pmFPAview *view = pmFPAviewAlloc(0); // View, to be returned
     if (phuView) {
-        // Copy the view, for the case where we're given a view.
+        // Copy the view values, for the case where we're given a view.
         *view = *phuView;
     }
