Index: trunk/psModules/src/imcombine/pmSubtractionMatch.c
===================================================================
--- trunk/psModules/src/imcombine/pmSubtractionMatch.c	(revision 14802)
+++ trunk/psModules/src/imcombine/pmSubtractionMatch.c	(revision 14803)
@@ -234,26 +234,15 @@
             if (stampsName && strlen(stampsName) > 0) {
                 psTrace("psModules.imcombine", 3, "Reading stamps from %s...\n", stampsName);
+                const char *stampFormat = input ? "%f %f" : "%f %f %f"; // Format for reading stamp file
+                psArray *stampsData = stampsData = psVectorsReadFromFile(stampsName, stampFormat);
                 psVector *xStamp = NULL, *yStamp = NULL, *fluxStamp = NULL; // Stamp positions and fluxes
-                if (input) {
-                    // We have x, y because the target is provided by the input image
-                    psArray *stampsData = psVectorsReadFromFile(stampsName, "%f %f"); // Stamp positions
-                    if (!stampsData) {
-                        psError(PS_ERR_IO, false, "Unable to read stamps file %s", stampsName);
-                        goto ERROR;
-                    }
-                    xStamp = psMemIncrRefCounter(stampsData->data[0]);
-                    yStamp = psMemIncrRefCounter(stampsData->data[1]);
-                    psFree(stampsData);
-                } else {
-                    // We have x, y and flux in order to generate a target
-                    psArray *stampsData = psVectorsReadFromFile(stampsName, "%f %f %f"); // Stamp positions
-                    if (!stampsData) {
-                        psError(PS_ERR_IO, false, "Unable to read stamps file %s", stampsName);
-                        goto ERROR;
-                    }
-                    xStamp = psMemIncrRefCounter(stampsData->data[0]);
-                    yStamp = psMemIncrRefCounter(stampsData->data[1]);
-                    fluxStamp = psMemIncrRefCounter(stampsData->data[2]);
-                    psFree(stampsData);
+                if (!stampsData) {
+                    psError(PS_ERR_IO, false, "Unable to read stamps file %s", stampsName);
+                    goto ERROR;
+                }
+                xStamp = stampsData->data[0];
+                yStamp = stampsData->data[1];
+                if (!input) {
+                    fluxStamp = stampsData->data[2];
                 }
 
@@ -264,4 +253,5 @@
                 stamps = pmSubtractionStampsSet(xStamp, yStamp, fluxStamp, reference->image, subMask,
                                                 region, stampSpacing, input ? 0 : 2 * footprint);
+                psFree(stampsData);
             }
 
