Fix memory leaks found by Coverity 26/12726/2
Sylvestre Ledru [Sat, 28 Sep 2013 09:57:18 +0000 (11:57 +0200)]
Change-Id: I1927f4f12380f81f5d24ecf872f9e9fe9597c559

scilab/modules/fftw/sci_gateway/c/sci_dct.c

index 6739a05..6d9effd 100644 (file)
@@ -390,6 +390,7 @@ int  sci_dct_3args(void* _pvCtx, char *fname, int ndimsA, int *dimsA, double *Ar
         Scierror(sciErr.iErr, getErrorMessage(sciErr));
         FREE(gdim.dims);
         FREE(gdim.howmany_dims);
+        FREE(Sel);
         return 0;
     }
     /* size of Sel must be less than ndimsA */
@@ -398,6 +399,7 @@ int  sci_dct_3args(void* _pvCtx, char *fname, int ndimsA, int *dimsA, double *Ar
         Scierror(999, _("%s: Wrong size for input argument #%d: Must be between %d and %d.\n"), fname, 3, 1, ndimsA - 1);
         FREE(gdim.dims);
         FREE(gdim.howmany_dims);
+        FREE(Sel);
         return 0;
     }
     /* check values of Sel[i] */
@@ -408,6 +410,7 @@ int  sci_dct_3args(void* _pvCtx, char *fname, int ndimsA, int *dimsA, double *Ar
             Scierror(999, _("%s: Wrong values for input argument #%d: Positive integers expected.\n"), fname, 3);
             FREE(gdim.dims);
             FREE(gdim.howmany_dims);
+            FREE(Sel);
             return 0;
         }
         if (Sel[i] > ndimsA)
@@ -415,6 +418,7 @@ int  sci_dct_3args(void* _pvCtx, char *fname, int ndimsA, int *dimsA, double *Ar
             Scierror(999, _("%s: Wrong values for input argument #%d: Elements must be less than %d.\n"), fname, 3, ndimsA);
             FREE(gdim.dims);
             FREE(gdim.howmany_dims);
+            FREE(Sel);
             return 0;
         }
         if (i > 0 && Sel[i] <= Sel[i - 1])
@@ -422,6 +426,7 @@ int  sci_dct_3args(void* _pvCtx, char *fname, int ndimsA, int *dimsA, double *Ar
             Scierror(999, _("%s: Wrong values for input argument #%d: Elements must be in increasing order.\n"), fname, 3);
             FREE(gdim.dims);
             FREE(gdim.howmany_dims);
+            FREE(Sel);
             return 0;
         }
     }
@@ -433,6 +438,7 @@ int  sci_dct_3args(void* _pvCtx, char *fname, int ndimsA, int *dimsA, double *Ar
         Scierror(999, _("%s: Cannot allocate more memory.\n"), fname);
         FREE(gdim.dims);
         FREE(gdim.howmany_dims);
+        FREE(Sel);
         return 0;
     }
 
@@ -491,6 +497,7 @@ int  sci_dct_3args(void* _pvCtx, char *fname, int ndimsA, int *dimsA, double *Ar
             Scierror(999, _("%s: Cannot allocate more memory.\n"), fname);
             FREE(gdim.dims);
             FREE(gdim.howmany_dims);
+            FREE(Sel);
             return 0;
         }
         pd = 1;
@@ -563,6 +570,7 @@ int  sci_dct_3args(void* _pvCtx, char *fname, int ndimsA, int *dimsA, double *Ar
     {
         FREE(gdim.dims);
         FREE(gdim.howmany_dims);
+        FREE(Sel);
         return 0;
     }