Index: trunk/ppImage/src/ppImageLoop.c
===================================================================
--- trunk/ppImage/src/ppImageLoop.c	(revision 13667)
+++ trunk/ppImage/src/ppImageLoop.c	(revision 13675)
@@ -10,12 +10,12 @@
 bool ppImageLoop (pmConfig *config, ppImageOptions *options) {
 
+    bool mdok;                      // Status of MD lookup
     bool status;
     pmChip *chip;
     pmCell *cell;
     pmReadout *readout;
-
-    bool mdok;                      // Status of MD lookup
+    psMetadata *stats = NULL;
+
     const char *statsName = psMetadataLookupStr(&mdok, config->arguments, "STATS"); // Filename for statistics
-    psMetadata *stats = NULL;           // Container for statistics
     FILE *statsFile = NULL;             // File stream for statistics
     if (mdok && statsName && strlen(statsName) > 0) {
@@ -27,5 +27,5 @@
             return false;
         } else {
-            stats = psMetadataAlloc();
+	    stats = psMetadataAlloc();
         }
         psFree(resolved);
@@ -123,7 +123,13 @@
                     return false;
                 }
-                ppStats(stats, output->fpa, view,
-                        options->satMask | options->badMask | options->maskValue,
-                        config);
+                psMetadata *newStats = ppStats(output->fpa, view,
+					       options->satMask | options->badMask | options->maskValue,
+					       config);
+		if (!newStats) {
+                    psError(PS_ERR_UNEXPECTED_NULL, true, "Unable to generate stats for image.\n");
+                    return false;
+                }
+		psMetadataCopy (stats, newStats);
+		psFree (newStats);
             }
 
@@ -200,5 +206,4 @@
         psFree((void *)statsMDC);
         fclose(statsFile);
-
         psFree(stats);
     }
