Index: /branches/eam_branches/ipp-20130419/pswarp/src/pswarpUpdateMetadata.c
===================================================================
--- /branches/eam_branches/ipp-20130419/pswarp/src/pswarpUpdateMetadata.c	(revision 35540)
+++ /branches/eam_branches/ipp-20130419/pswarp/src/pswarpUpdateMetadata.c	(revision 35541)
@@ -48,17 +48,20 @@
 		    psAssert(covariances, "Should be there");
 		    psArray *covars = psListToArray(covariances); // Array of covariance matrices
-		    psKernel *covar = psImageCovarianceAverage(covars);
-		    psFree(covars);
-		    psMetadataRemoveKey(readout->analysis, PSWARP_ANALYSIS_COVARIANCES);
+		    if (covars->n) {
+		      psKernel *covar = psImageCovarianceAverage(covars);
+		      psMetadataRemoveKey(readout->analysis, PSWARP_ANALYSIS_COVARIANCES);
 
-		    // Correct covariance matrix scale for the mean (square root of the) Jacobian
-		    double jacobian = psMetadataLookupF64(NULL, readout->analysis, PSWARP_ANALYSIS_JACOBIAN); // Jacobian
-		    int goodPixels = psMetadataLookupS32(NULL, readout->analysis, PSWARP_ANALYSIS_GOODPIX);   // Good pixels
-		    jacobian /= goodPixels;
-		    readout->covariance = psImageCovarianceScale(covar, jacobian);
-		    psFree(covar);
+		      // Correct covariance matrix scale for the mean (square root of the) Jacobian
+		      double jacobian = psMetadataLookupF64(NULL, readout->analysis, PSWARP_ANALYSIS_JACOBIAN); // Jacobian
+		      int goodPixels = psMetadataLookupS32(NULL, readout->analysis, PSWARP_ANALYSIS_GOODPIX);   // Good pixels
+		      jacobian /= goodPixels;
+		      readout->covariance = psImageCovarianceScale(covar, jacobian);
+		      psFree(covar);
 
-		    if (readout->variance) {
+		      if (readout->variance) {
 			psImageCovarianceTransfer(readout->variance, readout->covariance);
+		      }
+
+		      psFree(covars);
 		    }
 		}
