Index: trunk/psastro/src/psastroDataSave.c
===================================================================
--- trunk/psastro/src/psastroDataSave.c	(revision 27064)
+++ trunk/psastro/src/psastroDataSave.c	(revision 27065)
@@ -92,5 +92,9 @@
         pmConfigRecipesCull(config, "PPIMAGE,PPSTATS,PSPHOT,MASKS,PSASTRO");
 
-        pmConfigDump(config, dump_file);
+        if (!pmConfigDump(config, dump_file)) {
+            psError(psErrorCodeLast(), false, "Unable to dump configuration.");
+            psFree(view);
+            return false;
+        }
     }
 
@@ -100,4 +104,5 @@
 
     psFree (view);
+
     return true;
 }
Index: trunk/psastro/src/psastroMetadataStats.c
===================================================================
--- trunk/psastro/src/psastroMetadataStats.c	(revision 27064)
+++ trunk/psastro/src/psastroMetadataStats.c	(revision 27065)
@@ -46,8 +46,9 @@
     }
 
+    psFree(view);
+
     // if we did not request any specific stats, the structure is empty
     if (stats && stats->list->n == 0) {
         psWarning ("stats output specified, but no requested stats entries in headers");
-        psFree(view);
         return true;
     }
@@ -62,8 +63,12 @@
     // convert to a real UNIX filename
     psString resolved = pmConfigConvertFilename(filename, config, true, false); // Resolved filename
+    if (!resolved) {
+        psError(psErrorCodeLast(), false, "Unable to resolve statistics filename: %s", filename);
+        psFree(statsMDC);
+        return false;
+    }
     FILE *statsFile = fopen (resolved, "w");
     if (!statsFile) {
         psError(PS_ERR_IO, true, "Unable to open statistics file %s for writing.\n", resolved);
-        psFree(view);
         psFree(statsMDC);
         psFree(resolved);
@@ -72,12 +77,21 @@
 
     // write the stats MDC to a file
-    fprintf(statsFile, "%s", statsMDC);
-    fclose(statsFile);
+    if (fprintf(statsFile, "%s", statsMDC) != strlen(statsMDC)) {
+        psError(PS_ERR_IO, false, "Unable to write statistics file %s", resolved);
+        psFree(statsMDC);
+        psFree(resolved);
+        return false;
+    }
+    psFree(statsMDC);
+    if (fclose(statsFile) == EOF) {
+        psError(PS_ERR_IO, false, "Unable to write statistics file %s", resolved);
+        psFree(resolved);
+        return false;
+    }
+
+    psFree(resolved);
 
     pmConfigRunFilenameAddWrite(config, "STATS", filename);
 
-    psFree(resolved);
-    psFree(statsMDC);
-    psFree(view);
     return true;
 }
