Coverity: cacsd module resource leaks fixed 98/18198/1
Dhruv Khattar [Mon, 30 May 2016 21:01:22 +0000 (02:01 +0530)]
Change-Id: Ib51008bacca31040edd2f4e2449181a3f334f138

scilab/modules/cacsd/sci_gateway/cpp/sci_freq.cpp
scilab/modules/cacsd/sci_gateway/cpp/sci_ldiv.cpp
scilab/modules/cacsd/sci_gateway/cpp/sci_rtitr.cpp

index 1fc2838..5037345 100644 (file)
@@ -236,6 +236,8 @@ types::Function::ReturnValue freqRational(types::typed_list &in, int _iRetCount,
                 {
 
                     Scierror(999, _("%s: Wrong type for input argument #%d: A real polynom expected.\n"), "freq", 1);
+                    delete[] piRankDen;
+                    delete[] pdblDen;
                     return types::Function::Error;
                 }
             }
@@ -254,6 +256,8 @@ types::Function::ReturnValue freqRational(types::typed_list &in, int _iRetCount,
         else
         {
             Scierror(999, _("%s: Wrong type for input argument #%d: A matrix or polynom expected.\n"), "freq", 1);
+            delete[] piRankDen;
+            delete[] pdblDen;
             return types::Function::Error;
         }
 
index cd613e3..0901857 100644 (file)
@@ -113,12 +113,16 @@ types::Function::ReturnValue sci_ldiv(types::typed_list &in, int _iRetCount, typ
         if (pPoly2->isComplex())
         {
             Scierror(999, _("%s: Wrong type for input argument #%d: A real polynom expected.\n"), "ldiv", 2);
+            delete[] pdblCoef1;
+            delete[] piRank1;
             return types::Function::Error;
         }
 
         if (pPoly2->getRows() != iRows || pPoly2->getCols() != iCols)
         {
             Scierror(999, _("%s: Wrong size for input argument #%d: A same size as input argument %d expected.\n"), "ldiv", 2, 1);
+            delete[] pdblCoef1;
+            delete[] piRank1;
             return types::Function::Error;
         }
 
@@ -137,12 +141,16 @@ types::Function::ReturnValue sci_ldiv(types::typed_list &in, int _iRetCount, typ
         if (pDbl2->isComplex())
         {
             Scierror(999, _("%s: Wrong type for input argument #%d: A real matrix expected.\n"), "ldiv", 2);
+            delete[] pdblCoef1;
+            delete[] piRank1;
             return types::Function::Error;
         }
 
         if (pDbl2->getRows() != iRows || pDbl2->getCols() != iCols)
         {
             Scierror(999, _("%s: Wrong size for input argument #%d: A same size as input argument %d expected.\n"), "ldiv", 2, 1);
+            delete[] pdblCoef1;
+            delete[] piRank1;
             return types::Function::Error;
         }
 
@@ -159,6 +167,8 @@ types::Function::ReturnValue sci_ldiv(types::typed_list &in, int _iRetCount, typ
     else
     {
         Scierror(999, _("%s: Wrong type for input argument #%d: A matrix or polynom expected.\n"), "ldiv", 2);
+        delete[] pdblCoef1;
+        delete[] piRank1;
         return types::Function::Error;
     }
 
@@ -166,6 +176,10 @@ types::Function::ReturnValue sci_ldiv(types::typed_list &in, int _iRetCount, typ
     if (in[2]->isDouble() == false)
     {
         Scierror(999, _("%s: Wrong type for input argument #%d: A scalar expected.\n"), "ldiv", 3);
+        delete[] pdblCoef1;
+        delete[] pdblCoef2;
+        delete[] piRank1;
+        delete[] piRank2;
         return types::Function::Error;
     }
 
@@ -174,12 +188,20 @@ types::Function::ReturnValue sci_ldiv(types::typed_list &in, int _iRetCount, typ
     if (pDbl->isComplex())
     {
         Scierror(999, _("%s: Wrong type for input argument #%d: A real scalar expected.\n"), "ldiv", 3);
+        delete[] pdblCoef1;
+        delete[] pdblCoef2;
+        delete[] piRank1;
+        delete[] piRank2;
         return types::Function::Error;
     }
 
     if (pDbl->isScalar() == false)
     {
         Scierror(999, _("%s: Wrong size for input argument #%d: A real scalar expected.\n"), "ldiv", 3);
+        delete[] pdblCoef1;
+        delete[] pdblCoef2;
+        delete[] piRank1;
+        delete[] piRank2;
         return types::Function::Error;
     }
 
index 532e909..86655ec 100644 (file)
@@ -165,12 +165,16 @@ types::Function::ReturnValue sci_rtitr(types::typed_list &in, int _iRetCount, ty
         if (pDblDen->isComplex())
         {
             Scierror(999, _("%s: Wrong type for input argument #%d: A real matrix expected.\n"), "rtitr", 2);
+            delete[] pdblNum;
+            delete[] piRankNum;
             return types::Function::Error;
         }
 
         if (pDblDen->getRows() != pDblDen->getCols())
         {
             Scierror(999, _("%s: Wrong size for input argument #%d: A square matrix expected.\n"), "rtitr", 2);
+            delete[] pdblNum;
+            delete[] piRankNum;
             return types::Function::Error;
         }
 
@@ -191,12 +195,16 @@ types::Function::ReturnValue sci_rtitr(types::typed_list &in, int _iRetCount, ty
         if (pPolyDen->isComplex())
         {
             Scierror(999, _("%s: Wrong type for input argument #%d: A real polynom expected.\n"), "rtitr", 2);
+            delete[] pdblNum;
+            delete[] piRankNum;
             return types::Function::Error;
         }
 
         if (pPolyDen->getRows() != pPolyDen->getCols())
         {
             Scierror(999, _("%s: Wrong size for input argument #%d: A square matrix expected.\n"), "rtitr", 2);
+            delete[] pdblNum;
+            delete[] piRankNum;
             return types::Function::Error;
         }
 
@@ -215,6 +223,8 @@ types::Function::ReturnValue sci_rtitr(types::typed_list &in, int _iRetCount, ty
     else
     {
         Scierror(999, _("%s: Wrong type for input argument #%d: A matrix or polynom expected.\n"), "rtitr", 2);
+        delete[] pdblNum;
+        delete[] piRankNum;
         return types::Function::Error;
     }
 
@@ -222,6 +232,10 @@ types::Function::ReturnValue sci_rtitr(types::typed_list &in, int _iRetCount, ty
     if (in[2]->isDouble() == false)
     {
         Scierror(999, _("%s: Wrong type for input argument #%d: A matrix expected.\n"), "rtitr", 3);
+        delete[] pdblDen;
+        delete[] pdblNum;
+        delete[] piRankNum;
+        delete[] piRankDen;
         return types::Function::Error;
     }
 
@@ -230,6 +244,10 @@ types::Function::ReturnValue sci_rtitr(types::typed_list &in, int _iRetCount, ty
     if (pDblU->isComplex())
     {
         Scierror(999, _("%s: Wrong type for input argument #%d: A real matrix expected.\n"), "rtitr", 3);
+        delete[] pdblDen;
+        delete[] pdblNum;
+        delete[] piRankNum;
+        delete[] piRankDen;
         return types::Function::Error;
     }
 
@@ -239,6 +257,10 @@ types::Function::ReturnValue sci_rtitr(types::typed_list &in, int _iRetCount, ty
     if (iRowsDen != iRowsNum || iColsNum != iRowsU)
     {
         Scierror(60, _("%s: Wrong size for argument: Incompatible dimensions.\n"), "rtitr");
+        delete[] pdblDen;
+        delete[] pdblNum;
+        delete[] piRankNum;
+        delete[] piRankDen;
         return types::Function::Error;
     }
 
@@ -250,24 +272,40 @@ types::Function::ReturnValue sci_rtitr(types::typed_list &in, int _iRetCount, ty
         if (pDblYp->getRows() != iRowsDen && pDblYp->getRows() != 0)
         {
             Scierror(60, _("%s: Wrong size for argument: Incompatible dimensions.\n"), "rtitr");
+            delete[] pdblDen;
+            delete[] pdblNum;
+            delete[] piRankNum;
+            delete[] piRankDen;
             return types::Function::Error;
         }
 
         if (pDblYp->getCols() != iMaxRankDen)
         {
             Scierror(60, _("%s: Wrong size for argument: Incompatible dimensions.\n"), "rtitr");
+            delete[] pdblDen;
+            delete[] pdblNum;
+            delete[] piRankNum;
+            delete[] piRankDen;
             return types::Function::Error;
         }
 
         if (pDblUp->getRows() != iColsNum && pDblUp->getRows() != 0)
         {
             Scierror(60, _("%s: Wrong size for argument: Incompatible dimensions.\n"), "rtitr");
+            delete[] pdblDen;
+            delete[] pdblNum;
+            delete[] piRankNum;
+            delete[] piRankDen;
             return types::Function::Error;
         }
 
         if (pDblUp->getCols() != iMaxRankDen)
         {
             Scierror(60, _("%s: Wrong size for argument: Incompatible dimensions.\n"), "rtitr");
+            delete[] pdblDen;
+            delete[] pdblNum;
+            delete[] piRankNum;
+            delete[] piRankDen;
             return types::Function::Error;
         }
     }