UMFPACK: fix some memory leak on normal case 60/17460/2
Clément DAVID [Tue, 17 Nov 2015 09:14:57 +0000 (10:14 +0100)]
Change-Id: I789b0bdeb1de9556a828b105e6ea5ac18b662fef

scilab/modules/umfpack/sci_gateway/c/sci_umfpack.c

index b1e54fa..439bcab 100644 (file)
@@ -161,8 +161,10 @@ int sci_umfpack(char* fname, void* pvApiCtx)
     else
     {
         Scierror(999, _("%s: Wrong input argument #%d: '%s' or '%s' expected.\n"), fname, 2, "\\", "/");
+        FREE(pStr);
         return 1;
     }
+    FREE(pStr);
 
     /* get A */
     sciErr = getVarAddressFromPosition(pvApiCtx, num_A, &piAddrA);
@@ -417,6 +419,24 @@ int sci_umfpack(char* fname, void* pvApiCtx)
         umfpack_di_free_numeric(&Numeric);
     }
 
+    if (piNbItemRow != NULL)
+    {
+        FREE(piNbItemRow);
+    }
+    if (piColPos != NULL)
+    {
+        FREE(piColPos);
+    }
+    if (pdblSpReal != NULL)
+    {
+        FREE(pdblSpReal);
+    }
+    if (pdblSpImg != NULL)
+    {
+        FREE(pdblSpImg);
+    }
+    FREE(W);
+    FREE(Wi);
     freeCcsSparse(A);
 
     AssignOutputVariable(pvApiCtx, 1) = 4;