external_objects_java: fix crash on ScilabJavaEnvironment when used as a local variable
[scilab.git] / scilab / modules / external_objects_java / sci_gateway / cpp / sci_jautoTranspose.cpp
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) 2012 - Scilab Enterprises - Calixte DENIZET
4  * Copyright (C) 2013 - Scilab Enterprises - Sylvestre Ledru
5  *
6  * This file must be used under the terms of the CeCILL.
7  * This source file is licensed as described in the file COPYING, which
8  * you should have received as part of this distribution.  The terms
9  * are also available at
10  * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
11  *
12  */
13
14 #include "ScilabJavaEnvironment.hxx"
15 #include "ScilabGateway.hxx"
16
17 extern "C" {
18 #include "Scierror.h"
19 #include "gw_external_objects_java.h"
20 }
21
22 using namespace org_scilab_modules_external_objects_java;
23 using namespace org_modules_external_objects;
24
25 int sci_jautoTranspose(char * fname, unsigned long fname_len)
26 {
27     try
28     {
29         const int envId = ScilabJavaEnvironment::start();
30         ScilabJavaEnvironment *javaEnvironment = ScilabJavaEnvironment::getInstance();
31         if (!javaEnvironment)
32         {
33             Scierror(999, "%s: No Java environment available (instance is null).", fname);
34             return 0;
35         }
36
37         JavaOptionsSetter setter = javaEnvironment->getOptionsHelper().getSetter(JavaOptionsSetter::METHODOFCONV);
38         return ScilabGateway::getsetOptions(fname, envId, setter, pvApiCtx);
39     }
40     catch (std::exception & e)
41     {
42         Scierror(999, "%s: An error occured: %s", fname, e.what());
43         return 0;
44     }
45
46     return 0;
47 }