The uimenu function no longer managed the matrices of strings. 74/12174/2
Adeline CARNIS [Mon, 29 Jul 2013 13:07:20 +0000 (15:07 +0200)]
test_run('gui', 'bug_8826')

Change-Id: Ied5fb8eb99b263d38da24675795834074d131def

scilab/modules/gui/sci_gateway/c/sci_uimenu.c

index 5a88e96..d78b7bd 100644 (file)
@@ -1,18 +1,18 @@
 /*
- * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
- * Copyright (C) 2006 - INRIA - Allan Cornet
- * Copyright (C) 2006 - INRIA - Jean-Baptiste Silvy
- * Copyright (C) 2006 - INRIA - Fabrice Leray
- * Copyright (C) 2011 - DIGITEO - Allan CORNET
- * desc : interface for sci_uimenu routine
- *
- * This file must be used under the terms of the CeCILL.
- * This source file is licensed as described in the file COPYING, which
- * you should have received as part of this distribution.  The terms
- * are also available at
- * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
- *
- */
+* Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+* Copyright (C) 2006 - INRIA - Allan Cornet
+* Copyright (C) 2006 - INRIA - Jean-Baptiste Silvy
+* Copyright (C) 2006 - INRIA - Fabrice Leray
+* Copyright (C) 2011 - DIGITEO - Allan CORNET
+* desc : interface for sci_uimenu routine
+*
+* This file must be used under the terms of the CeCILL.
+* This source file is licensed as described in the file COPYING, which
+* you should have received as part of this distribution.  The terms
+* are also available at
+* http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
+*
+*/
 
 /*--------------------------------------------------------------------------*/
 #include "BuildObjects.h"
@@ -66,11 +66,11 @@ int sci_uimenu(char *fname, unsigned long fname_len)
     }
 
     /**
-     * Odd number of input arguments
-     * First input is the parent ID
-     * All event inputs are property names
-     * All odd (except first) inputs are property values
-     */
+    * Odd number of input arguments
+    * First input is the parent ID
+    * All event inputs are property names
+    * All odd (except first) inputs are property values
+    */
     if (nbInputArgument(pvApiCtx) % 2 == 1)
     {
         if ((!checkInputArgumentType(pvApiCtx, 1, sci_handles)))
@@ -124,10 +124,10 @@ int sci_uimenu(char *fname, unsigned long fname_len)
         }
     }
     /**
-     * Even number of input arguments
-     * All odd inputs are property names
-     * All even inputs are property values
-     */
+    * Even number of input arguments
+    * All odd inputs are property names
+    * All even inputs are property values
+    */
     else
     {
         // First input parameter which is a property name
@@ -186,63 +186,65 @@ int sci_uimenu(char *fname, unsigned long fname_len)
             nbCol = -1;
             setStatus = callSetProperty(pvApiCtx, (char*)getObjectFromHandle(GraphicHandle), piAddrValue, 0, 0, 0, propertyName);
         }
-
-        /* Read property value */
-        switch (getInputArgumentType(pvApiCtx, iPropertyValuePositionIndex))
+        else
         {
-            case sci_matrix:
+            /* Read property value */
+            switch (getInputArgumentType(pvApiCtx, iPropertyValuePositionIndex))
             {
-                double* pdblValue = NULL;
-                sciErr = getMatrixOfDouble(pvApiCtx, piAddrValue, &nbRow, &nbCol, &pdblValue);
-                if (sciErr.iErr)
+                case sci_matrix:
                 {
-                    printError(&sciErr, 0);
-                    Scierror(202, _("%s: Wrong type for argument %d: A real expected.\n"), fname, iPropertyValuePositionIndex);
-                    return 1;
+                    double* pdblValue = NULL;
+                    sciErr = getMatrixOfDouble(pvApiCtx, piAddrValue, &nbRow, &nbCol, &pdblValue);
+                    if (sciErr.iErr)
+                    {
+                        printError(&sciErr, 0);
+                        Scierror(202, _("%s: Wrong type for argument %d: A real expected.\n"), fname, iPropertyValuePositionIndex);
+                        return 1;
+                    }
+
+                    setStatus = callSetProperty(pvApiCtx, (char*)getObjectFromHandle(GraphicHandle), pdblValue, sci_matrix, nbRow, nbCol, propertyName);
+                    break;
                 }
+                case sci_strings:
+                {
+                    char* pstValue = NULL;
+                    if (getAllocatedSingleString(pvApiCtx, piAddrValue, &pstValue))
+                    {
+                        Scierror(202, _("%s: Wrong type for argument #%d: A string expected.\n"), fname, iPropertyValuePositionIndex);
+                        return 1;
+                    }
 
-                setStatus = callSetProperty(pvApiCtx, (char*)getObjectFromHandle(GraphicHandle), pdblValue, sci_matrix, nbRow, nbCol, propertyName);
-                break;
-            }
-            case sci_strings:
-            {
-                char* pstValue = NULL;
-                if (getAllocatedSingleString(pvApiCtx, piAddrValue, &pstValue))
+                    nbRow = (int)strlen(pstValue);
+                    nbCol = 1;
+                    setStatus = callSetProperty(pvApiCtx, (char*)getObjectFromHandle(GraphicHandle), pstValue, sci_strings, nbRow, nbCol, propertyName);
+                    freeAllocatedSingleString(pstValue);
+                    break;
+                }
+                case sci_handles:
                 {
-                    Scierror(202, _("%s: Wrong type for argument #%d: A string expected.\n"), fname, iPropertyValuePositionIndex);
-                    return 1;
+                    long long* phValues = NULL;
+                    sciErr = getMatrixOfHandle(pvApiCtx, piAddrValue, &nbRow, &nbCol, &phValues);
+                    if (sciErr.iErr)
+                    {
+                        printError(&sciErr, 0);
+                        Scierror(202, _("%s: Wrong type for input argument #%d: Handle matrix expected.\n"), fname, iPropertyValuePositionIndex);
+                        return 1;
+                    }
+                    setStatus = callSetProperty(pvApiCtx, (char*)getObjectFromHandle(GraphicHandle), phValues, sci_handles, nbRow, nbCol, propertyName);
+                    break;
                 }
-
-                nbRow = (int)strlen(pstValue);
-                nbCol = 1;
-                setStatus = callSetProperty(pvApiCtx, (char*)getObjectFromHandle(GraphicHandle), pstValue, sci_strings, nbRow, nbCol, propertyName);
-                freeAllocatedSingleString(pstValue);
-                break;
-            }
-            case sci_handles:
-            {
-                long long* phValues = NULL;
-                sciErr = getMatrixOfHandle(pvApiCtx, piAddrValue, &nbRow, &nbCol, &phValues);
-                if (sciErr.iErr)
+                case sci_list:
                 {
-                    printError(&sciErr, 0);
-                    Scierror(202, _("%s: Wrong type for input argument #%d: Handle matrix expected.\n"), fname, iPropertyValuePositionIndex);
-                    return 1;
+                    getListItemNumber(pvApiCtx, piAddrValue, &nbRow);
+                    nbCol = 1;
+                    setStatus = callSetProperty(pvApiCtx, (char*)getObjectFromHandle(GraphicHandle), piAddrValue, sci_list, nbRow, nbCol, propertyName);
+                    break;
+                }
+                default:
+                {
+                    setStatus = SET_PROPERTY_ERROR;
+                    break;
                 }
-                setStatus = callSetProperty(pvApiCtx, (char*)getObjectFromHandle(GraphicHandle), phValues, sci_handles, nbRow, nbCol, propertyName);
-                break;
-            }
-            case sci_list:
-            {
-                getListItemNumber(pvApiCtx, piAddrValue, &nbRow);
-                nbCol = 1;
-                setStatus = callSetProperty(pvApiCtx, (char*)getObjectFromHandle(GraphicHandle), piAddrValue, sci_list, nbRow, nbCol, propertyName);
-                break;
-            }
-            default:
-            {
-                setStatus = SET_PROPERTY_ERROR;
-                break;
             }
         }