]> gerrit.simantics Code Review - simantics/python.git/blobdiff - org.simantics.pythonlink.win32.x86_64/src/sclpy.c
Fixed merge errors.
[simantics/python.git] / org.simantics.pythonlink.win32.x86_64 / src / sclpy.c
index 4881cc7d7c26d4a20979542530230724dc1df5f2..686221e2ac09da96874dc03c7c5abb857495b2e2 100644 (file)
@@ -115,6 +115,7 @@ JNIEXPORT jlong JNICALL Java_org_simantics_pythonlink_PythonContext_createContex
                        PyDict_SetItemString(dict, "__builtin__", builtin);
                        PyDict_SetItemString(dict, "__builtins__", builtin);
 
+                       PyEval_SaveThread();
                        return (jlong)modDef;
                }
        }
@@ -856,9 +857,10 @@ jobject pythonDictionaryAsMap(JNIEnv *env, PyObject *dict) {
     ##VariableImpl(                                                     \
         JNIEnv *env, jobject thisObj, jlong contextID, jstring variableName, \
         jtype value) {                                                  \
-            PyObject *module = getModule(contextID);                    \
+            PyObject *module;                                           \
                                                                         \
             PyEval_RestoreThread(main_ts);                              \
+            module = getModule(contextID);                              \
             setPythonVariable(module, getPythonString(env, variableName), \
                               j2py(env, value));                        \
             PyEval_SaveThread();                                        \
@@ -883,8 +885,6 @@ JNIEXPORT void JNICALL
 Java_org_simantics_pythonlink_PythonContext_setPythonNDArrayVariableImpl(
                JNIEnv *env, jobject thisObj, jlong contextID, jstring variableName,
                jobject value) {
-       PyObject *module = getModule(contextID);
-
        if (!hasNumpy) {
                throwPythonException(env, "Importing numpy failed");
                return;
@@ -892,6 +892,7 @@ Java_org_simantics_pythonlink_PythonContext_setPythonNDArrayVariableImpl(
 
        PyEval_RestoreThread(main_ts);
        {
+               PyObject *module = getModule(contextID);
                PyObject *pythonName = getPythonString(env, variableName);
                PyObject *val = getPythonNDArray(env, value);
 
@@ -904,9 +905,10 @@ JNIEXPORT void JNICALL
 Java_org_simantics_pythonlink_PythonContext_setPythonVariantVariableImpl(
                JNIEnv *env, jobject thisObj, jlong contextID, jstring variableName,
                jobject value, jobject binding) {
-       PyObject *module = getModule(contextID);
+       PyObject *module;
 
        PyEval_RestoreThread(main_ts);
+       module = getModule(contextID);
        setPythonVariable(module, getPythonString(env, variableName),
                                          getPythonObject(env, value, binding));
        PyEval_SaveThread();
@@ -915,13 +917,13 @@ Java_org_simantics_pythonlink_PythonContext_setPythonVariantVariableImpl(
 JNIEXPORT jint JNICALL
 Java_org_simantics_pythonlink_PythonContext_executePythonStatementImpl(
                JNIEnv *env, jobject thisObj, jlong contextID, jstring statement) {
-       PyObject *module = getModule(contextID);
-
        const char *utfchars = (*env)->GetStringUTFChars(env, statement, NULL);
 
        PyEval_RestoreThread(main_ts);
        PyErr_Clear();
        {
+               PyObject *module = getModule(contextID);
+
                jclass sclReportingWriterClass = (*env)->FindClass(env, SCL_REPORTING_WRITER_CLASS);
                jmethodID constructor = (*env)->GetMethodID(env, sclReportingWriterClass, "<init>", "()V");
                jmethodID flushMethod = (*env)->GetMethodID(env, sclReportingWriterClass, "flush", "()V");