Coverity #1099169, #1098330, #1320913 fixed 44/18444/5
Dhruv Khattar [Thu, 11 Aug 2016 11:02:43 +0000 (16:02 +0530)]
Change-Id: Ie2fba4f218ac2f4503a0910221d746f738ebf17e

scilab/modules/scicos_blocks/src/c/canimxy3d.c
scilab/modules/scicos_blocks/src/c/evaluate_expr.c
scilab/modules/scicos_blocks/src/cpp/fromws_c.cpp

index 8d7493b..ba4e6e4 100644 (file)
@@ -295,15 +295,23 @@ static void freeScoData(scicos_block * block)
 static void appendData(scicos_block * block, double *x, double *y, double *z)
 {
     int i;
+    int maxNumberOfPoints;
+    int numberOfPoints;
+    int setLen;
+
 
     sco_data *sco = (sco_data *) * (block->work);
-    int maxNumberOfPoints = sco->internal.maxNumberOfPoints;
-    int numberOfPoints = sco->internal.numberOfPoints;
+    if (sco == NULL)
+    {
+        return;
+    }
+    maxNumberOfPoints = sco->internal.maxNumberOfPoints;
+    numberOfPoints = sco->internal.numberOfPoints;
 
     /*
      * Handle the case where the scope has more points than maxNumberOfPoints
      */
-    if (sco != NULL && numberOfPoints >= maxNumberOfPoints)
+    if (numberOfPoints >= maxNumberOfPoints)
     {
         int setLen = maxNumberOfPoints - 1;
 
@@ -327,30 +335,25 @@ static void appendData(scicos_block * block, double *x, double *y, double *z)
     /*
      * Update data
      */
-    if (sco != NULL)
+    for (i = 0; i < block->insz[0]; i++)
     {
-        int setLen;
-
-        for (i = 0; i < block->insz[0]; i++)
+        for (setLen = maxNumberOfPoints - numberOfPoints - 1; setLen >= 0; setLen--)
         {
-            for (setLen = maxNumberOfPoints - numberOfPoints - 1; setLen >= 0; setLen--)
-            {
-                sco->internal.coordinates[i][numberOfPoints + setLen] = x[i];
-            }
-
-            for (setLen = maxNumberOfPoints - numberOfPoints - 1; setLen >= 0; setLen--)
-            {
-                sco->internal.coordinates[i][maxNumberOfPoints + numberOfPoints + setLen] = y[i];
-            }
+            sco->internal.coordinates[i][numberOfPoints + setLen] = x[i];
+        }
 
-            for (setLen = maxNumberOfPoints - numberOfPoints - 1; setLen >= 0; setLen--)
-            {
-                sco->internal.coordinates[i][2 * maxNumberOfPoints + numberOfPoints + setLen] = z[i];
-            }
+        for (setLen = maxNumberOfPoints - numberOfPoints - 1; setLen >= 0; setLen--)
+        {
+            sco->internal.coordinates[i][maxNumberOfPoints + numberOfPoints + setLen] = y[i];
         }
 
-        sco->internal.numberOfPoints++;
+        for (setLen = maxNumberOfPoints - numberOfPoints - 1; setLen >= 0; setLen--)
+        {
+            sco->internal.coordinates[i][2 * maxNumberOfPoints + numberOfPoints + setLen] = z[i];
+        }
     }
+
+    sco->internal.numberOfPoints++;
 }
 
 static BOOL pushData(scicos_block * block, int row)
index ccde9ea..7a0ceec 100644 (file)
@@ -49,7 +49,7 @@ double acosh(double x)
 }
 /*--------------------------------------------------------------------------*/
 /*
-Inverse hyperbolic tangent (Atanh(x)) Log((1 + x) / (1 – x)) / 2
+Inverse hyperbolic tangent (Atanh(x)) Log((1 + x) / (1 –\96 x)) / 2
 */
 double atanh(double x)
 {
@@ -744,6 +744,11 @@ SCICOS_BLOCKS_IMPEXP void evaluate_expr(scicos_block *block, int flag)
                     return;
             }
         }
+        if (bottom < 0)
+        {
+            set_block_error(-2);
+            return;
+        }
 #if _MSC_VER
         if (!_finite(stack[bottom]) || _isnan(stack[bottom]))
         {
index 347e1b7..060e611 100644 (file)
@@ -373,6 +373,7 @@ SCICOS_BLOCKS_IMPEXP void fromws_c(scicos_block* block, int flag)
                 delete[] (char*) ptr->work;
                 delete[] ptr;
                 closeHDF5File(fd);
+                return;
             }
 
             /* Check Hmat */