Coverity #1321256, #1321259 fixed
[scilab.git] / scilab / modules / preferences / sci_gateway / cpp / sci_removeModulePreferences.cpp
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) 2011 - DIGITEO - Calixte DENIZET
4  *
5  * Copyright (C) 2012 - 2016 - Scilab Enterprises
6  *
7  * This file is hereby licensed under the terms of the GNU GPL v2.0,
8  * pursuant to article 5.3.4 of the CeCILL v.2.1.
9  * This file was originally licensed under the terms of the CeCILL v2.1,
10  * and continues to be available under such terms.
11  * For more information, see the COPYING file which you should have received
12  * along with this program.
13  *
14  */
15
16 #include "ScilabPreferences.hxx"
17 #include "GiwsException.hxx"
18 #include "preferences_gw.hxx"
19
20 extern "C"
21 {
22 #include "Scierror.h"
23 #include "api_scilab.h"
24 #include "localization.h"
25 #include "getScilabJavaVM.h"
26 }
27
28 using namespace org_scilab_modules_preferences;
29
30 /*--------------------------------------------------------------------------*/
31 int sci_removeModulePreferences(char * fname, void *pvApiCtx)
32 {
33     SciErr err;
34     int * addr = 0;
35     char * tbxName = 0;
36     bool error = false;
37
38     CheckLhs(1, 1);
39     CheckRhs(1, 1);
40
41     err = getVarAddressFromPosition(pvApiCtx, 1, &addr);
42     if (err.iErr)
43     {
44         printError(&err, 0);
45         return 0;
46     }
47
48     if (!isEmptyMatrix(pvApiCtx, addr))
49     {
50         if (!isStringType(pvApiCtx, addr))
51         {
52             Scierror(999, gettext("%s: Wrong type for input argument #%i: string expected.\n"), fname, 1);
53         }
54         if (getAllocatedSingleString(pvApiCtx, addr, &tbxName))
55         {
56             return 0;
57         }
58     }
59
60     try
61     {
62         ScilabPreferences::removeToolboxInfos(getScilabJavaVM(), tbxName);
63     }
64     catch (const GiwsException::JniException & e)
65     {
66         Scierror(999, _("%s: A Java exception arised:\n%s"), fname, e.what());
67         error = true;
68     }
69
70     if (tbxName)
71     {
72         freeAllocatedSingleString(tbxName);
73     }
74
75     if (!error)
76     {
77         LhsVar(1) = 0;
78         PutLhsVar();
79     }
80
81     return 0;
82 }
83 /*--------------------------------------------------------------------------*/