Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2014-10-13 19:44:27 +0400
committerCampbell Barton <ideasman42@gmail.com>2014-10-15 18:54:58 +0400
commit201abb4946a03fd1df5e7be2c766154a8f6fa198 (patch)
treec8147877433cfff744974dee556c31c19e0c9d36
parentfc82f6b5fd1445373c0d8db8c98a542c18f66ae1 (diff)
Fix T42005: Reset py-handlers could crash
Wasn't acquiring the GIL.
-rw-r--r--source/blender/python/intern/bpy_app_handlers.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/source/blender/python/intern/bpy_app_handlers.c b/source/blender/python/intern/bpy_app_handlers.c
index 41ca2d49ed6..44da322efc0 100644
--- a/source/blender/python/intern/bpy_app_handlers.c
+++ b/source/blender/python/intern/bpy_app_handlers.c
@@ -240,8 +240,11 @@ PyObject *BPY_app_handlers_struct(void)
void BPY_app_handlers_reset(const short do_all)
{
+ PyGILState_STATE gilstate;
int pos = 0;
+ gilstate = PyGILState_Ensure();
+
if (do_all) {
for (pos = 0; pos < BLI_CB_EVT_TOT; pos++) {
/* clear list */
@@ -279,6 +282,8 @@ void BPY_app_handlers_reset(const short do_all)
Py_DECREF(perm_id_str);
}
+
+ PyGILState_Release(gilstate);
}
/* the actual callback - not necessarily called from py */