Index: branches/pap/ppStack/src/ppStackCombineFinal.c
===================================================================
--- branches/pap/ppStack/src/ppStackCombineFinal.c	(revision 25830)
+++ branches/pap/ppStack/src/ppStackCombineFinal.c	(revision 25911)
@@ -10,5 +10,5 @@
 #include "ppStackLoop.h"
 
-bool ppStackCombineFinal(pmReadout *target, ppStackThreadData *stack,
+bool ppStackCombineFinal(pmReadout *target, ppStackThreadData *stack, psArray *covariances,
                          ppStackOptions *options, pmConfig *config, bool full, bool normalise)
 {
@@ -56,13 +56,13 @@
 
     // Sum covariance matrices
-    if (options->covariances) {
+    if (covariances) {
         double sumWeights = 0.0;            // Sum of weights
         for (int i = 0; i < options->num; i++) {
             if (options->inputMask->data.U8[i]) {
-                psFree(options->covariances->data[i]);
-                options->covariances->data[i] = NULL;
+                psFree(covariances->data[i]);
+                covariances->data[i] = NULL;
                 continue;
             }
-            psKernel *covar = options->covariances->data[i]; // Covariance matrix
+            psKernel *covar = covariances->data[i]; // Covariance matrix
             if (!covar) {
                 continue;
@@ -73,8 +73,7 @@
         }
         if (sumWeights > 0.0) {
-            target->covariance = psImageCovarianceSum(options->covariances);
+            target->covariance = psImageCovarianceSum(covariances);
             psBinaryOp(target->covariance->image, target->covariance->image, "/",
                        psScalarAlloc(sumWeights, PS_TYPE_F32));
-            psFree(options->covariances); options->covariances = NULL;
             psImageCovarianceTransfer(target->variance, target->covariance);
         }
