Index: /trunk/psModules/src/imcombine/pmSubtractionMatch.c
===================================================================
--- /trunk/psModules/src/imcombine/pmSubtractionMatch.c	(revision 14712)
+++ /trunk/psModules/src/imcombine/pmSubtractionMatch.c	(revision 14713)
@@ -212,4 +212,12 @@
     }
 
+    // Putting important variable declarations here, since they are freed after a "goto" if there is an error.
+    psImage *subMask = NULL;            // Mask for subtraction
+    psArray *stamps = NULL;             // Stamps for matching PSF
+    psRegion *region = NULL;            // Iso-kernel region
+    psString regionString = NULL;       // String for region
+    psVector *solution = NULL;          // Solution to match PSF
+    pmSubtractionKernels *kernels = NULL; // Kernel basis functions
+
     // Read stamps from file
     psArray *stampsData = NULL;         // Stamps data read from file
@@ -240,13 +248,8 @@
     memCheck("start");
 
-    // Mask for subtraction
-    psImage *subMask = pmSubtractionMask(reference->mask, inMask, maskBad, size, footprint);
+    subMask = pmSubtractionMask(reference->mask, inMask, maskBad, size, footprint);
 
     memCheck("mask");
 
-
-    psArray *stamps = NULL;             // Stamps for matching PSF
-
-    pmSubtractionKernels *kernels = NULL; // Kernel basis functions
     if (optimum && (type == PM_SUBTRACTION_KERNEL_ISIS || type == PM_SUBTRACTION_KERNEL_GUNK)) {
         if (!getStamps(&stamps, stampsData, reference, input, subMask, weight, NULL,
@@ -277,13 +280,10 @@
     psMetadataAddPtr(convolved->analysis, PS_LIST_TAIL, "SUBTRACTION.KERNEL", PS_DATA_UNKNOWN,
                      "Subtraction kernels", kernels);
-    psVector *solution = NULL;          // Solution to match PSF
-
 
     memCheck("kernels");
 
+    // Get region of interest
     int xRegions = 1, yRegions = 1;     // Number of iso-kernel regions
     float xRegionSize = 0, yRegionSize = 0; // Size of iso-kernel regions
-    psRegion *region = NULL;            // Iso-kernel region
-    psString regionString = NULL;       // String for region
     if (isfinite(regionSize) && regionSize != 0.0) {
         xRegions = numCols / regionSize + 1;
@@ -481,4 +481,5 @@
     psFree(solution);
     psFree(stampsData);
+    psFree(stamps);
     return false;
 }
