diff options
Diffstat (limited to 'pyuno')
-rw-r--r-- | pyuno/source/loader/makefile.mk | 2 | ||||
-rw-r--r-- | pyuno/source/module/makefile.mk | 2 | ||||
-rw-r--r-- | pyuno/source/module/pyuno_gc.cxx | 10 | ||||
-rw-r--r-- | pyuno/zipcore/python.cxx | 10 |
4 files changed, 15 insertions, 9 deletions
diff --git a/pyuno/source/loader/makefile.mk b/pyuno/source/loader/makefile.mk index 6e4f96ed7014..f9f00e4f13ae 100644 --- a/pyuno/source/loader/makefile.mk +++ b/pyuno/source/loader/makefile.mk @@ -42,7 +42,7 @@ DLLPRE = #------------------------------------------------------------------- -.IF "$(OS)$(CPU)$(COMEX)" == "SOLARISS4" +.IF "$(OS)$(COMEX)" == "SOLARIS4" # no -Bdirect for SunWS CC DIRECT = $(LINKFLAGSDEFS) .ENDIF diff --git a/pyuno/source/module/makefile.mk b/pyuno/source/module/makefile.mk index 2357d0062ed0..2928d29668aa 100644 --- a/pyuno/source/module/makefile.mk +++ b/pyuno/source/module/makefile.mk @@ -42,7 +42,7 @@ LINKFLAGSDEFS = # do not fail with missing symbols .IF "$(L10N_framework)"=="" #------------------------------------------------------------------- -.IF "$(OS)$(CPU)$(COMEX)" == "SOLARISS4" +.IF "$(OS)$(COMEX)" == "SOLARIS4" # no -Bdirect for SunWS CC DIRECT = $(LINKFLAGSDEFS) .ENDIF diff --git a/pyuno/source/module/pyuno_gc.cxx b/pyuno/source/module/pyuno_gc.cxx index 513c14a99378..1e0ca08ff954 100644 --- a/pyuno/source/module/pyuno_gc.cxx +++ b/pyuno/source/module/pyuno_gc.cxx @@ -43,6 +43,12 @@ public: }; StaticDestructorGuard guard; +static bool isAfterUnloadOrPy_Finalize() +{ + return g_destructorsOfStaticObjectsHaveBeenCalled || + !Py_IsInitialized(); +} + class GCThread : public ::osl::Thread { PyObject *mPyObject; @@ -64,7 +70,7 @@ GCThread::GCThread( PyInterpreterState *interpreter, PyObject * object ) : void GCThread::run() { // otherwise we crash here, when main has been left already - if( g_destructorsOfStaticObjectsHaveBeenCalled ) + if( isAfterUnloadOrPy_Finalize() ) return; try { @@ -100,7 +106,7 @@ void GCThread::onTerminated() void decreaseRefCount( PyInterpreterState *interpreter, PyObject *object ) { // otherwise we crash in the last after main ... - if( g_destructorsOfStaticObjectsHaveBeenCalled ) + if( isAfterUnloadOrPy_Finalize() ) return; // delegate to a new thread, because there does not seem diff --git a/pyuno/zipcore/python.cxx b/pyuno/zipcore/python.cxx index 2e0e1ea0acb4..80765830d056 100644 --- a/pyuno/zipcore/python.cxx +++ b/pyuno/zipcore/python.cxx @@ -206,7 +206,7 @@ int wmain(int argc, wchar_t ** argv, wchar_t **) { MultiByteToWideChar(CP_ACP, 0, argv[i], -1, buff, nNeededWStrBuffSize); buff[nNeededWStrBuffSize] = 0; cp = encode(cp, buff); - delete buff; + delete [] buff; #else cp = encode(cp, argv[i]); #endif @@ -235,9 +235,9 @@ int wmain(int argc, wchar_t ** argv, wchar_t **) { exit(EXIT_FAILURE); } if (n != 0) { - delete orig; + delete [] orig; } - delete value; + delete [] value; n = GetEnvironmentVariableW(L"PYTHONPATH", NULL, 0); if (n == 0) { if (GetLastError() != ERROR_ENVVAR_NOT_FOUND) { @@ -276,9 +276,9 @@ int wmain(int argc, wchar_t ** argv, wchar_t **) { exit(EXIT_FAILURE); } if (n != 0) { - delete orig; + delete [] orig; } - delete value; + delete [] value; if (!SetEnvironmentVariableW(L"PYTHONHOME", pythonhome)) { exit(EXIT_FAILURE); } |