Coverity: graphic_export module resource leaks fixed
[scilab.git] / scilab / modules / graphic_export / sci_gateway / cpp / sci_xend.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 #include "ScilabView.hxx"
17 #include "SwingView.hxx"
18 #include "Driver.hxx"
19
20 extern "C"
21 {
22 #include "getScilabJavaVM.h"
23 #include "Scierror.h"
24 #include "api_scilab.h"
25 #include "localization.h"
26 #include "deleteGraphicObject.h"
27
28 #include "gw_graphic_export.h"
29 #include "os_string.h"
30 }
31
32 /*--------------------------------------------------------------------------*/
33 int sci_xend(char * fname, void *pvApiCtx)
34 {
35     CheckInputArgument(pvApiCtx, 0, 0);
36
37     int iCurrentFigureReference = ScilabView::getCurrentFigure();
38
39     if (iCurrentFigureReference != 0)
40     {
41         int uid = iCurrentFigureReference;
42
43         if (uid)
44         {
45             char * ret = org_scilab_modules_graphic_export::Driver::end(getScilabJavaVM(), uid);
46
47             deleteGraphicObject(uid);
48
49             if (*ret != '\0')
50             {
51                 Scierror(999, _("%s: An error occurred: %s\n"), fname, ret);
52                 return 0;
53             }
54             delete[] ret;
55         }
56     }
57
58     LhsVar(1) = 0;
59     PutLhsVar();
60
61     return 0;
62 }
63 /*--------------------------------------------------------------------------*/