Index: trunk/psLib/src/math/psMinimizeLMM.c
===================================================================
--- trunk/psLib/src/math/psMinimizeLMM.c	(revision 28998)
+++ trunk/psLib/src/math/psMinimizeLMM.c	(revision 29542)
@@ -325,7 +325,7 @@
         chisq += PS_SQR(delta) * dy->data.F32[i];
 
-        if (isnan(dy->data.F32[i])) return NAN;
-        if (isnan(delta)) return NAN;
-        if (isnan(chisq)) return NAN;
+        if (isnan(dy->data.F32[i])) goto escape;
+        if (isnan(delta)) goto escape;
+        if (isnan(chisq)) goto escape;
 
         // we track alpha,beta and params,deriv separately
@@ -354,4 +354,8 @@
     psFree(deriv);
     return(chisq);
+
+escape:
+    psFree(deriv);
+    return NAN;
 }
 
@@ -448,4 +452,9 @@
     if (isnan(min->value)) {
         min->iter = min->maxIter;
+	psFree(alpha);
+	psFree(Alpha);
+	psFree(beta);
+	psFree(Beta);
+	psFree(Params);
         return(false);
     }
