Missing exit in historysize error case
[scilab.git] / scilab / modules / history_manager / sci_gateway / c / sci_historysize.c
1 /*
2 * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 * Copyright (C) 2007-2008 - INRIA - Allan CORNET
4 * Copyright (C) 2011 - DIGITEO - Allan CORNET
5 * Copyright (C) 2014 - Scilab Enterprises - Anais AUBERT
6 *
7 * This file must be used under the terms of the CeCILL.
8 * This source file is licensed as described in the file COPYING, which
9 * you should have received as part of this distribution.  The terms
10 * are also available at
11 * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
12 *
13 */
14
15 /*------------------------------------------------------------------------*/
16 #include "gw_history_manager.h"
17 #include "HistoryManager.h"
18 #include "api_scilab.h"
19 #include "localization.h"
20 #include "Scierror.h"
21 /*--------------------------------------------------------------------------*/
22 int sci_historysize(char *fname, unsigned long fname_len)
23 {
24     int iReturnedValue = 0;
25
26     Rhs = Max(Rhs, 0);
27     CheckRhs(0, 1);
28     CheckLhs(0, 1);
29     if (Rhs == 1)
30     {
31         int iValue = 0;
32         int *piAddressVarOne = NULL;
33         SciErr sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddressVarOne);
34         if (sciErr.iErr)
35         {
36             printError(&sciErr, 0);
37             Scierror(999, _("%s: Can not read input argument #%d.\n"), fname, 1);
38             return 0;
39         }
40
41         if (isStringType(pvApiCtx, piAddressVarOne))
42         {
43             if (isScalar(pvApiCtx, piAddressVarOne))
44             {
45                 char *paramValue = NULL;
46                 if (getAllocatedSingleString(pvApiCtx, piAddressVarOne, &paramValue) == 0)
47                 {
48                     if (strcmp(paramValue, "max") == 0)
49                     {
50                         iReturnedValue = getSizeMaxScilabHistory();
51                         freeAllocatedSingleString(paramValue);
52                         paramValue = NULL;
53                     }
54                     else
55                     {
56                         Scierror(999, _("%s: Wrong value for input argument #%d: \"%s\" expected.\n"), fname, 1, "max");
57                         freeAllocatedSingleString(paramValue);
58                         paramValue = NULL;
59                         return 0;
60                     }
61                 }
62                 else
63                 {
64                     Scierror(999, _("%s: Memory allocation error.\n"), fname);
65                     return 0;
66                 }
67             }
68             else
69             {
70                 Scierror(999, _("%s: Wrong size for input argument #%d.\n"), fname, 1);
71                 return 0;
72             }
73         }
74         else if (isDoubleType(pvApiCtx, piAddressVarOne))
75         {
76             if (isScalar(pvApiCtx, piAddressVarOne))
77             {
78                 double dValue = 0.;
79                 if (getScalarDouble(pvApiCtx, piAddressVarOne, &dValue) == 0)
80                 {
81                     iValue = (int)(dValue);
82                 }
83
84                 if (!setSizeMaxScilabHistory(iValue))
85                 {
86                     Scierror(999, _("%s: Wrong value for input argument #%d.\n"), fname, 1);
87                     return 0;
88                 }
89                 iReturnedValue = iValue;
90             }
91             else
92             {
93                 Scierror(999, _("%s: Wrong size for input argument #%d.\n"), fname, 1);
94                 return 0;
95             }
96         }
97         else
98         {
99             Scierror(999, _("%s: Wrong type for input argument #%d.\n"), fname, 1);
100             return 0;
101         }
102     }
103     else
104     {
105         iReturnedValue = getSizeScilabHistory();
106     }
107
108     createScalarDouble(pvApiCtx, Rhs + 1, (double)iReturnedValue);
109     LhsVar(1) = Rhs + 1;
110
111     PutLhsVar();
112     return 0;
113 }
114 /*--------------------------------------------------------------------------*/