Xcos scopes: fix the error reporting on NWNI mode 74/17074/2
Clément DAVID [Thu, 20 Aug 2015 09:49:49 +0000 (11:49 +0200)]
an NWNI simulation with a scope crashed without reporting a
comprehensive issue.

Change-Id: Ic5c739dc720f5a32675e4cd777839b3891f24019

scilab/modules/scicos_blocks/src/c/bouncexy.c
scilab/modules/scicos_blocks/src/c/canimxy.c
scilab/modules/scicos_blocks/src/c/canimxy3d.c
scilab/modules/scicos_blocks/src/c/cevscpe.c
scilab/modules/scicos_blocks/src/c/cfscope.c
scilab/modules/scicos_blocks/src/c/cmscope.c
scilab/modules/scicos_blocks/src/c/cscope.c
scilab/modules/scicos_blocks/src/c/cscopxy.c
scilab/modules/scicos_blocks/src/c/cscopxy3d.c
scilab/modules/scicos_blocks/src/cpp/scoUtils.cpp

index ec22249..2578254 100644 (file)
@@ -129,8 +129,9 @@ static int getArc(int iAxeUID, scicos_block * block, int row);
  * Set the bounds
  *
  * \param block the block
+ * \param iAxeUID the axe id
  */
-static BOOL setBounds(scicos_block * block);
+static BOOL setBounds(scicos_block * block, int iAxeUID);
 
 /*****************************************************************************
  * Simulation function
@@ -407,7 +408,7 @@ static int getFigure(scicos_block * block)
         setGraphicObjectProperty(iAxe, __GO_BOX_TYPE__, &i__1, jni_int, 1);
         setGraphicObjectProperty(iAxe, __GO_ISOVIEW__, &b_true, jni_bool, 1);
 
-        setBounds(block);
+        setBounds(block, iAxe);
     }
 
     if (sco->scope.cachedFigureUID == 0)
@@ -539,11 +540,8 @@ static int getArc(int iAxeUID, scicos_block * block, int row)
     return sco->scope.cachedArcsUIDs[row];
 }
 
-static BOOL setBounds(scicos_block * block)
+static BOOL setBounds(scicos_block * block, int iAxeUID)
 {
-    int iFigureUID;
-    int iAxeUID;
-
     double dataBounds[6];
 
     dataBounds[0] = block->rpar[0]; // xMin
@@ -553,8 +551,5 @@ static BOOL setBounds(scicos_block * block)
     dataBounds[4] = -1.0;       // zMin
     dataBounds[5] = 1.0;        // zMax
 
-    iFigureUID = getFigure(block);
-    iAxeUID = getAxe(iFigureUID, block);
-
     return setGraphicObjectProperty(iAxeUID, __GO_DATA_BOUNDS__, dataBounds, jni_double_vector, 6);
 }
index 4dbe79e..0d003da 100644 (file)
@@ -126,8 +126,9 @@ static int getPolyline(int AxeUID, scicos_block * block, int row);
  * Set the polylines bounds
  *
  * \param block the block
+ * \param iAxeUID the axe id
  */
-static BOOL setPolylinesBounds(scicos_block * block);
+static BOOL setPolylinesBounds(scicos_block * block, int iAxeUID);
 
 /*****************************************************************************
  * Simulation function
@@ -457,7 +458,7 @@ static int getFigure(scicos_block * block)
         setGraphicObjectProperty(iAxe, __GO_X_AXIS_VISIBLE__, &i__1, jni_bool, 1);
         setGraphicObjectProperty(iAxe, __GO_Y_AXIS_VISIBLE__, &i__1, jni_bool, 1);
 
-        setPolylinesBounds(block);
+        setPolylinesBounds(block, iAxe);
     }
 
     if (sco->scope.cachedFigureUID == 0)
@@ -605,11 +606,8 @@ static int getPolyline(int iAxeUID, scicos_block * block, int row)
     return iPolyline;
 }
 
-static BOOL setPolylinesBounds(scicos_block * block)
+static BOOL setPolylinesBounds(scicos_block * block, int iAxeUID)
 {
-    int iFigureUID = 0;
-    int iAxeUID = 0;
-
     double dataBounds[6];
 
     dataBounds[0] = block->rpar[0]; // xMin
@@ -619,8 +617,5 @@ static BOOL setPolylinesBounds(scicos_block * block)
     dataBounds[4] = -1.0;       // zMin
     dataBounds[5] = 1.0;        // zMax
 
-    iFigureUID = getFigure(block);
-    iAxeUID = getAxe(iFigureUID, block);
-
     return setGraphicObjectProperty(iAxeUID, __GO_DATA_BOUNDS__, dataBounds, jni_double_vector, 6);
 }
index 59dde31..6ce862d 100644 (file)
@@ -127,8 +127,9 @@ static int getPolyline(int iAxeUID, scicos_block * block, int row);
  * Set the polylines bounds
  *
  * \param block the block
+ * \param iAxeUID the axe id
  */
-static BOOL setPolylinesBounds(scicos_block * block);
+static BOOL setPolylinesBounds(scicos_block * block, int iAxeUID);
 
 /*****************************************************************************
  * Simulation function
@@ -472,7 +473,7 @@ static int getFigure(scicos_block * block)
         setGraphicObjectProperty(iAxe, __GO_Y_AXIS_VISIBLE__, &i__1, jni_bool, 1);
         setGraphicObjectProperty(iAxe, __GO_Z_AXIS_VISIBLE__, &i__1, jni_bool, 1);
 
-        setPolylinesBounds(block);
+        setPolylinesBounds(block, iAxe);
     }
 
     if (sco->scope.cachedFigureUID == 0)
@@ -620,11 +621,8 @@ static int getPolyline(int iAxeUID, scicos_block * block, int row)
     return sco->scope.cachedPolylinesUIDs[row];
 }
 
-static BOOL setPolylinesBounds(scicos_block * block)
+static BOOL setPolylinesBounds(scicos_block * block, int iAxeUID)
 {
-    int iFigureUID;
-    int iAxeUID;
-
     BOOL result;
     double dataBounds[6];
     double rotationAngle[2];
@@ -639,9 +637,6 @@ static BOOL setPolylinesBounds(scicos_block * block)
     rotationAngle[0] = block->rpar[6];  // alpha
     rotationAngle[1] = block->rpar[7];  // theta
 
-    iFigureUID = getFigure(block);
-    iAxeUID = getAxe(iFigureUID, block);
-
     result = setGraphicObjectProperty(iAxeUID, __GO_DATA_BOUNDS__, dataBounds, jni_double_vector, 6);
     if (result == FALSE)
     {
index bee4e1d..6247439 100644 (file)
@@ -140,9 +140,10 @@ static BOOL setSegsBuffers(scicos_block * block, int maxNumberOfPoints);
  * Set the axes bounds
  *
  * \param block the block
+ * \param iAxeUID the axe id
  * \param periodCounter number of past periods since startup
  */
-static BOOL setBounds(scicos_block * block, int periodCounter);
+static BOOL setBounds(scicos_block * block, int iAxeUID, int periodCounter);
 
 /*****************************************************************************
  * Simulation function
@@ -427,7 +428,7 @@ static void appendData(scicos_block * block, int input, double t)
         {
             sco->internal.numberOfPoints[i] = 0;
         }
-        if (setBounds(block, sco->scope.periodCounter) == FALSE)
+        if (setBounds(block, getAxe(getFigure(block), block), sco->scope.periodCounter) == FALSE)
         {
             set_block_error(-5);
             freeScoData(block);
@@ -619,7 +620,7 @@ static int getFigure(scicos_block * block)
         setGraphicObjectProperty(iAxe, __GO_X_AXIS_VISIBLE__, &i__1, jni_bool, 1);
         setGraphicObjectProperty(iAxe, __GO_Y_AXIS_VISIBLE__, &i__1, jni_bool, 1);
 
-        setBounds(block, 0);
+        setBounds(block, iAxe, 0);
     }
 
     if (sco->scope.cachedFigureUID == 0)
@@ -795,11 +796,8 @@ static BOOL setSegsBuffers(scicos_block * block, int maxNumberOfPoints)
     return result;
 }
 
-static BOOL setBounds(scicos_block * block, int periodCounter)
+static BOOL setBounds(scicos_block * block, int iAxeUID, int periodCounter)
 {
-    int iFigureUID;
-    int iAxeUID;
-
     double dataBounds[6];
     double period = block->rpar[0];
 
@@ -810,7 +808,5 @@ static BOOL setBounds(scicos_block * block, int periodCounter)
     dataBounds[4] = -1.0;       // zMin
     dataBounds[5] = 1.0;        // zMax
 
-    iFigureUID = getFigure(block);
-    iAxeUID = getAxe(iFigureUID, block);
     return setGraphicObjectProperty(iAxeUID, __GO_DATA_BOUNDS__, dataBounds, jni_double_vector, 6);
 }
index 311bcca..f294ad0 100644 (file)
@@ -132,10 +132,10 @@ static int getPolyline(int iAxeUID, scicos_block * block, int row);
  * Set the polylines bounds
  *
  * \param block the block
- * \param input the input port index
+ * \param iAxeUID the axe id
  * \param periodCounter number of past periods since startup
  */
-static BOOL setPolylinesBounds(scicos_block * block, int input, int periodCounter);
+static BOOL setPolylinesBounds(scicos_block * block, int iAxeUID, int periodCounter);
 
 /*****************************************************************************
  * Simulation function
@@ -415,7 +415,7 @@ static void appendData(scicos_block * block, int input, double t, double *data)
 
         numberOfPoints = 0;
         sco->internal.numberOfPoints = 0;
-        if (setPolylinesBounds(block, input, sco->scope.periodCounter) == FALSE)
+        if (setPolylinesBounds(block, getAxe(getFigure(block), block, input), sco->scope.periodCounter) == FALSE)
         {
             set_block_error(-5);
             freeScoData(block);
@@ -585,7 +585,7 @@ static int getFigure(scicos_block * block)
             setGraphicObjectProperty(iAxe, __GO_X_AXIS_VISIBLE__, &i__1, jni_bool, 1);
             setGraphicObjectProperty(iAxe, __GO_Y_AXIS_VISIBLE__, &i__1, jni_bool, 1);
 
-            setPolylinesBounds(block, i, 0);
+            setPolylinesBounds(block, iAxe, 0);
         }
     }
 
@@ -729,11 +729,8 @@ static int getPolyline(int iAxeUID, scicos_block * block, int row)
     return sco->scope.cachedPolylinesUIDs[row];
 }
 
-static BOOL setPolylinesBounds(scicos_block * block, int input, int periodCounter)
+static BOOL setPolylinesBounds(scicos_block * block, int iAxeUID, int periodCounter)
 {
-    int iFigureUID;
-    int iAxeUID;
-
     double dataBounds[6];
     double period = block->rpar[3];
 
@@ -744,7 +741,5 @@ static BOOL setPolylinesBounds(scicos_block * block, int input, int periodCounte
     dataBounds[4] = -1.0;       // zMin
     dataBounds[5] = 1.0;        // zMax
 
-    iFigureUID = getFigure(block);
-    iAxeUID = getAxe(iFigureUID, block, input);
     return setGraphicObjectProperty(iAxeUID, __GO_DATA_BOUNDS__, dataBounds, jni_double_vector, 6);
 }
index 9c0a691..359d0df 100644 (file)
@@ -189,10 +189,11 @@ static BOOL pushHistory(scicos_block * block, int input, int maxNumberOfPoints);
  * Set the polylines bounds
  *
  * \param block the block
- * \param input the input port index
+ * \param iAxeUID the axe id
+ * \param input the input number
  * \param periodCounter number of past periods since startup
  */
-static BOOL setPolylinesBounds(scicos_block * block, int input, int periodCounter);
+static BOOL setPolylinesBounds(scicos_block * block, int iAxeUID, int input, int periodCounter);
 
 /*****************************************************************************
  * Simulation function
@@ -620,7 +621,7 @@ static void appendData(scicos_block * block, int input, double t, double *data)
         }
 
         // configure scope setting
-        if (setPolylinesBounds(block, input, sco->scope.periodCounter[input]) == FALSE)
+        if (setPolylinesBounds(block, getAxe(getFigure(block), block, input), input, sco->scope.periodCounter[input]) == FALSE)
         {
             set_block_error(-5);
             freeScoData(block);
@@ -840,7 +841,7 @@ static int getFigure(scicos_block * block)
             setGraphicObjectProperty(iAxe, __GO_X_AXIS_VISIBLE__, &i__1, jni_bool, 1);
             setGraphicObjectProperty(iAxe, __GO_Y_AXIS_VISIBLE__, &i__1, jni_bool, 1);
 
-            setPolylinesBounds(block, i, 0);
+            setPolylinesBounds(block, iAxe, i, 0);
         }
     }
     else
@@ -1083,11 +1084,8 @@ static BOOL pushHistory(scicos_block * block, int input, int maxNumberOfPoints)
     return result;
 }
 
-static BOOL setPolylinesBounds(scicos_block * block, int input, int periodCounter)
+static BOOL setPolylinesBounds(scicos_block * block, int iAxeUID, int input, int periodCounter)
 {
-    int iFigureUID;
-    int iAxeUID;
-
     double dataBounds[6];
     int nin = block->nin;
     double period = block->rpar[block->nrpar - 3 * nin + input];
@@ -1101,7 +1099,5 @@ static BOOL setPolylinesBounds(scicos_block * block, int input, int periodCounte
 
     LOG("%s: %s at %d to %f\n", "cmscope", "setPolylinesBounds", input, dataBounds[1]);
 
-    iFigureUID = getFigure(block);
-    iAxeUID = getAxe(iFigureUID, block, input);
     return setGraphicObjectProperty(iAxeUID, __GO_DATA_BOUNDS__, dataBounds, jni_double_vector, 6);
 }
index 73f679a..11caac7 100644 (file)
@@ -177,11 +177,11 @@ static BOOL pushHistory(scicos_block * block, int input, int maxNumberOfPoints);
 /**
  * Set the polylines bounds
  *
- * \param block the block
- * \param input the input port index
+ * \param block the current block
+ * \param iAxeUID the axe uid
  * \param periodCounter number of past periods since startup
  */
-static BOOL setPolylinesBounds(scicos_block * block, int input, int periodCounter);
+static BOOL setPolylinesBounds(scicos_block * block, int iAxeUID, int periodCounter);
 
 /*****************************************************************************
  * Simulation function
@@ -556,7 +556,7 @@ static void appendData(scicos_block * block, int input, double t, double *data)
         }
 
         // configure scope setting
-        if (setPolylinesBounds(block, input, sco->scope.periodCounter) == FALSE)
+        if (setPolylinesBounds(block, getAxe(getFigure(block), block, input), sco->scope.periodCounter) == FALSE)
         {
             set_block_error(-5);
             freeScoData(block);
@@ -750,7 +750,7 @@ static int getFigure(scicos_block * block)
             setGraphicObjectProperty(iAxe, __GO_X_AXIS_VISIBLE__, &i__1, jni_bool, 1);
             setGraphicObjectProperty(iAxe, __GO_Y_AXIS_VISIBLE__, &i__1, jni_bool, 1);
 
-            setPolylinesBounds(block, i, 0);
+            setPolylinesBounds(block, iAxe, 0);
         }
     }
     else
@@ -987,11 +987,8 @@ static BOOL pushHistory(scicos_block * block, int input, int maxNumberOfPoints)
     return result;
 }
 
-static BOOL setPolylinesBounds(scicos_block * block, int input, int periodCounter)
+static BOOL setPolylinesBounds(scicos_block * block, int iAxeUID, int periodCounter)
 {
-    int iFigureUID;
-    int iAxeUID;
-
     double dataBounds[6];
     double period = block->rpar[3];
 
@@ -1002,7 +999,5 @@ static BOOL setPolylinesBounds(scicos_block * block, int input, int periodCounte
     dataBounds[4] = -1.0;       // zMin
     dataBounds[5] = 1.0;        // zMax
 
-    iFigureUID = getFigure(block);
-    iAxeUID = getAxe(iFigureUID, block, input);
     return setGraphicObjectProperty(iAxeUID, __GO_DATA_BOUNDS__, dataBounds, jni_double_vector, 6);
 }
index f8f91e6..2b3e4cd 100644 (file)
@@ -126,8 +126,9 @@ static int getPolyline(int iAxeUID, scicos_block * block, int row);
  * Set the polylines bounds
  *
  * \param block the block
+ * \param iAxeUID the axe id
  */
-static BOOL setPolylinesBounds(scicos_block * block);
+static BOOL setPolylinesBounds(scicos_block * block, int iAxeUID);
 
 /*****************************************************************************
  * Simulation function
@@ -491,7 +492,7 @@ static int getFigure(scicos_block * block)
         setGraphicObjectProperty(iAxe, __GO_X_AXIS_VISIBLE__, &i__1, jni_bool, 1);
         setGraphicObjectProperty(iAxe, __GO_Y_AXIS_VISIBLE__, &i__1, jni_bool, 1);
 
-        setPolylinesBounds(block);
+        setPolylinesBounds(block, iAxe);
     }
 
     if (sco->scope.cachedFigureUID == 0)
@@ -639,11 +640,8 @@ static int getPolyline(int iAxeUID, scicos_block * block, int row)
     return sco->scope.cachedPolylinesUIDs[row];
 }
 
-static BOOL setPolylinesBounds(scicos_block * block)
+static BOOL setPolylinesBounds(scicos_block * block, int iAxeUID)
 {
-    int iFigureUID;
-    int iAxeUID;
-
     double dataBounds[6];
 
     dataBounds[0] = block->rpar[0]; // xMin
@@ -653,8 +651,5 @@ static BOOL setPolylinesBounds(scicos_block * block)
     dataBounds[4] = -1.0;       // zMin
     dataBounds[5] = 1.0;        // zMax
 
-    iFigureUID = getFigure(block);
-    iAxeUID = getAxe(iFigureUID, block);
-
     return setGraphicObjectProperty(iAxeUID, __GO_DATA_BOUNDS__, dataBounds, jni_double_vector, 6);
 }
index 1fdc94c..167ad10 100644 (file)
@@ -127,8 +127,9 @@ static int getPolyline(int iAxeUID, scicos_block * block, int row);
  * Set the polylines bounds
  *
  * \param block the block
+ * \param iAxeUID the axe id
  */
-static BOOL setPolylinesBounds(scicos_block * block);
+static BOOL setPolylinesBounds(scicos_block * block, int iAxeUID);
 
 /*****************************************************************************
  * Simulation function
@@ -508,7 +509,7 @@ static int getFigure(scicos_block * block)
         setGraphicObjectProperty(iAxe, __GO_Y_AXIS_VISIBLE__, &i__1, jni_bool, 1);
         setGraphicObjectProperty(iAxe, __GO_Z_AXIS_VISIBLE__, &i__1, jni_bool, 1);
 
-        setPolylinesBounds(block);
+        setPolylinesBounds(block, iAxe);
     }
 
     if (sco->scope.cachedFigureUID == 0)
@@ -656,11 +657,8 @@ static int getPolyline(int iAxeUID, scicos_block * block, int row)
     return sco->scope.cachedPolylinesUIDs[row];
 }
 
-static BOOL setPolylinesBounds(scicos_block * block)
+static BOOL setPolylinesBounds(scicos_block * block, int iAxeUID)
 {
-    int iFigureUID;
-    int iAxeUID;
-
     BOOL result;
     double dataBounds[6];
     double rotationAngle[2];
@@ -675,9 +673,6 @@ static BOOL setPolylinesBounds(scicos_block * block)
     rotationAngle[0] = block->rpar[6];  // alpha
     rotationAngle[1] = block->rpar[7];  // theta
 
-    iFigureUID = getFigure(block);
-    iAxeUID = getAxe(iFigureUID, block);
-
     result = setGraphicObjectProperty(iAxeUID, __GO_DATA_BOUNDS__, dataBounds, jni_double_vector, 6);
     if (result == FALSE)
     {
index 23ceeaf..bb98d17 100644 (file)
@@ -35,8 +35,8 @@ int findChildWithKindAt(int parent, int type, const int position)
 {
     int child = 0;
 
-    int childrenCount;
-    int*children;
+    int childrenCount = 0;
+    int*children = NULL;
 
     int i;
     int iChildType = -1;