Index: trunk/psastro/src/psastroDataSave.c
===================================================================
--- trunk/psastro/src/psastroDataSave.c	(revision 12806)
+++ trunk/psastro/src/psastroDataSave.c	(revision 15216)
@@ -2,4 +2,10 @@
 // XXX leak free 2006.04.27
 
+# define ESCAPE { \
+  psError(PS_ERR_UNKNOWN, false, "Failure in psastroDataSave"); \
+  psFree (view); \
+  return false; \
+}
+  
 // this loop saves the photometry/astrometry data files
 bool psastroDataSave (pmConfig *config) {
@@ -30,32 +36,32 @@
 
     // open/load files as needed
-    pmFPAfileIOChecks (config, view, PM_FPA_BEFORE);
+    if (!pmFPAfileIOChecks (config, view, PM_FPA_BEFORE)) ESCAPE;
 
     while ((chip = pmFPAviewNextChip (view, output->fpa, 1)) != NULL) {
         psTrace ("psastro", 4, "Chip %d: %x %x\n", view->chip, chip->file_exists, chip->process);
         if (!chip->process || !chip->file_exists) { continue; }
-	pmFPAfileIOChecks (config, view, PM_FPA_BEFORE);
+	if (!pmFPAfileIOChecks (config, view, PM_FPA_BEFORE)) ESCAPE;
 
 	while ((cell = pmFPAviewNextCell (view, output->fpa, 1)) != NULL) {
             psTrace ("psastro", 4, "Cell %d: %x %x\n", view->cell, cell->file_exists, cell->process);
             if (!cell->process || !cell->file_exists) { continue; }
-	    pmFPAfileIOChecks (config, view, PM_FPA_BEFORE);
+	    if (!pmFPAfileIOChecks (config, view, PM_FPA_BEFORE)) ESCAPE;
 
 	    // process each of the readouts
 	    while ((readout = pmFPAviewNextReadout (view, output->fpa, 1)) != NULL) {
-		pmFPAfileIOChecks (config, view, PM_FPA_BEFORE);
-		if (! readout->data_exists) { continue; }
+		if (!pmFPAfileIOChecks (config, view, PM_FPA_BEFORE)) ESCAPE;
+		if (!readout->data_exists) { continue; }
 
-		pmFPAfileIOChecks (config, view, PM_FPA_AFTER);
+		if (!pmFPAfileIOChecks (config, view, PM_FPA_AFTER)) ESCAPE;
 	    }
-	    pmFPAfileIOChecks (config, view, PM_FPA_AFTER);
+	    if (!pmFPAfileIOChecks (config, view, PM_FPA_AFTER)) ESCAPE;
 	}
-	pmFPAfileIOChecks (config, view, PM_FPA_AFTER);
+	if (!pmFPAfileIOChecks (config, view, PM_FPA_AFTER)) ESCAPE;
     }
-    pmFPAfileIOChecks (config, view, PM_FPA_AFTER);
+    if (!pmFPAfileIOChecks (config, view, PM_FPA_AFTER)) ESCAPE;
 
     // activate all files except PSASTRO.OUTPUT
-    pmFPAfileActivate (config->files, true, NULL);
-    pmFPAfileActivate (config->files, false, "PSASTRO.OUTPUT");
+    if (!pmFPAfileActivate (config->files, true, NULL)) ESCAPE;
+    if (!pmFPAfileActivate (config->files, false, "PSASTRO.OUTPUT")) ESCAPE;
 
     psFree (view);
