Coverity #1321343, #1321344, #1321288, #1321095 fixed: Resource Leaks 84/18084/4
Dhruv Khattar [Thu, 14 Apr 2016 20:35:23 +0000 (01:35 +0530)]
Change-Id: I0d2800c8f4430bb7eb9e4b573e7750502def721e

scilab/modules/differential_equations/sci_gateway/cpp/sci_daskr.cpp
scilab/modules/differential_equations/sci_gateway/cpp/sci_dasrt.cpp
scilab/modules/differential_equations/sci_gateway/cpp/sci_odedc.cpp

index 7ca0d4d..c0d763f 100644 (file)
@@ -166,6 +166,9 @@ types::Function::ReturnValue sci_daskr(types::typed_list &in, int _iRetCount, ty
     if (in[iPos]->isDouble() == false)
     {
         Scierror(999, _("%s: Wrong type for input argument #%d: A scalar expected.\n"), "daskr", iPos + 1);
+        FREE(pdYdotData);
+        FREE(pdYData);
+        FREE(YSize);
         return types::Function::Error;
     }
 
@@ -174,6 +177,9 @@ types::Function::ReturnValue sci_daskr(types::typed_list &in, int _iRetCount, ty
     if (pDblT0->isScalar() == false)
     {
         Scierror(999, _("%s: Wrong size for input argument #%d: A scalar expected.\n"), "daskr", iPos + 1);
+        FREE(pdYdotData);
+        FREE(pdYData);
+        FREE(YSize);
         return types::Function::Error;
     }
 
@@ -182,6 +188,9 @@ types::Function::ReturnValue sci_daskr(types::typed_list &in, int _iRetCount, ty
     if (in[iPos]->isDouble() == false)
     {
         Scierror(999, _("%s: Wrong type for input argument #%d: A matrix expected.\n"), "daskr", iPos + 1);
+        FREE(pdYdotData);
+        FREE(pdYData);
+        FREE(YSize);
         return types::Function::Error;
     }
 
@@ -190,6 +199,9 @@ types::Function::ReturnValue sci_daskr(types::typed_list &in, int _iRetCount, ty
     if (pDblT->isComplex())
     {
         Scierror(999, _("%s: Wrong type for input argument #%d: A real matrix expected.\n"), "daskr", iPos + 1);
+        FREE(pdYdotData);
+        FREE(pdYData);
+        FREE(YSize);
         return types::Function::Error;
     }
 
@@ -904,6 +916,7 @@ types::Function::ReturnValue sci_daskr(types::typed_list &in, int _iRetCount, ty
             FREE(YSize);
             FREE(iwork);
             FREE(rwork);
+            FREE(root);
             if (pDblAtol == NULL || pDblAtol->isScalar())
             {
                 FREE(atol);
index f0c78e0..d696a4c 100644 (file)
@@ -681,6 +681,7 @@ types::Function::ReturnValue sci_dasrt(types::typed_list &in, int _iRetCount, ty
             FREE(YSize);
             FREE(iwork);
             FREE(rwork);
+            FREE(root);
             if (pDblAtol == NULL || pDblAtol->isScalar())
             {
                 FREE(atol);
index f94e859..76ec8a3 100644 (file)
@@ -1687,6 +1687,10 @@ types::Function::ReturnValue sci_odedc(types::typed_list &in, int _iRetCount, ty
     if (dStructTab)
     {
         FREE(dStructTab);
+    }
+
+    if (iStructTab)
+    {
         FREE(iStructTab);
     }