aboutsummaryrefslogtreecommitdiffstats
path: root/libshiboken
diff options
context:
space:
mode:
authorrenatofilho <renato.filho@openbossa.org>2010-10-26 15:38:21 -0300
committerHugo Parente Lima <hugo.pl@gmail.com>2012-03-08 16:08:53 -0300
commitce8f43df969038f5e24c7923abeac2c9fa6461e0 (patch)
treed116562943ec0d5a4c69856aac7eb19ed15e61ec /libshiboken
parent467240696e7ed0ca03cdecffa2b63112ab9507d8 (diff)
Release gil before call C++ function on virtual method.
Fixes bug #423. Reviewer: Hugo Parente Lima <hugo.pl@gmail.com> Luciano Wolf <luciano.wolf@openbossa.org>
Diffstat (limited to 'libshiboken')
-rw-r--r--libshiboken/gilstate.cpp8
-rw-r--r--libshiboken/gilstate.h1
2 files changed, 7 insertions, 2 deletions
diff --git a/libshiboken/gilstate.cpp b/libshiboken/gilstate.cpp
index 50a3c6e6e..f49930e1d 100644
--- a/libshiboken/gilstate.cpp
+++ b/libshiboken/gilstate.cpp
@@ -33,10 +33,14 @@ GilState::GilState()
GilState::~GilState()
{
- if(Py_IsInitialized())
- PyGILState_Release(m_gstate);
+ release();
}
+void GilState::release()
+{
+ if(Py_IsInitialized() && m_gstate)
+ PyGILState_Release(m_gstate);
+}
} // namespace Shiboken
diff --git a/libshiboken/gilstate.h b/libshiboken/gilstate.h
index efb3cb794..b2f33cb2c 100644
--- a/libshiboken/gilstate.h
+++ b/libshiboken/gilstate.h
@@ -34,6 +34,7 @@ class LIBSHIBOKEN_API GilState
public:
GilState();
~GilState();
+ void release();
private:
PyGILState_STATE m_gstate;
};