Coverity: graphic_export module resource leaks fixed
[scilab.git] / scilab / modules / graphic_export / sci_gateway / cpp / sci_xinit.cpp
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) 2012 - Scilab Enterprises - 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
17 #include "Driver.hxx"
18
19 extern "C"
20 {
21 #include "getScilabJavaVM.h"
22 #include "Scierror.h"
23 #include "api_scilab.h"
24 #include "localization.h"
25 #include "expandPathVariable.h"
26 #include "sci_malloc.h"
27
28 #include "gw_graphic_export.h"
29 }
30
31 /*--------------------------------------------------------------------------*/
32 int sci_xinit(char * fname, void *pvApiCtx)
33 {
34     SciErr err;
35     int * addr = 0;
36     char * path = 0;
37     char * realPath = 0;
38
39     CheckInputArgument(pvApiCtx, 1, 1);
40
41     err = getVarAddressFromPosition(pvApiCtx, 1, &addr);
42     if (err.iErr)
43     {
44         printError(&err, 0);
45         Scierror(999, _("%s: Can not read input argument #%d.\n"), fname, 1);
46         return 0;
47     }
48
49     if (!isStringType(pvApiCtx, addr) || !checkVarDimension(pvApiCtx, addr, 1, 1))
50     {
51         Scierror(999, gettext("%s: Wrong type for input argument #%d: string expected.\n"), fname, 1);
52         return 0;
53     }
54
55     if (getAllocatedSingleString(pvApiCtx, addr, &path) != 0)
56     {
57         Scierror(999, _("%s: No more memory.\n"), fname);
58         return 0;
59     }
60
61     realPath = expandPathVariable(path);
62
63     if (realPath)
64     {
65         org_scilab_modules_graphic_export::Driver::setPath(getScilabJavaVM(), realPath);
66         FREE(realPath);
67     }
68     else
69     {
70         Scierror(999, _("%s: Invalid path: %s.\n"), fname, path);
71         freeAllocatedSingleString(path);
72         return 0;
73     }
74
75     freeAllocatedSingleString(path);
76
77     LhsVar(1) = 0;
78     PutLhsVar();
79
80     return 0;
81 }
82 /*--------------------------------------------------------------------------*/