From 614dacbbf5d4decb575d7b5ea3c00d5b14dba6ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9F=D0=B5=D0=BB=D0=B8=D0=BF=D0=B5=D0=BD=D0=BA=D0=BE=20?= =?UTF-8?q?=D0=98=D0=B2=D0=B0=D0=BD?= Date: Thu, 16 Apr 2020 13:06:05 +0000 Subject: [PATCH] git-svn-id: svn://db.shs.com.ru/pip@1035 12ceb7fc-bf1f-11e4-8940-5bc7170c53b5 --- src_main/core/piobject.h | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/src_main/core/piobject.h b/src_main/core/piobject.h index 4e6f7f8e..bddce621 100755 --- a/src_main/core/piobject.h +++ b/src_main/core/piobject.h @@ -637,8 +637,10 @@ public: if (ts) i.dest_o->mutex_.lock(); i.dest_o->emitter_ = sender; ((void( *)(void * ))i.slot)(i.dest); - i.dest_o->emitter_ = 0; - if (ts) i.dest_o->mutex_.unlock(); + if (i.dest_o->isPIObject()) { + i.dest_o->emitter_ = 0; + if (ts) i.dest_o->mutex_.unlock(); + } } #ifdef PIP_CXX11_SUPPORT } @@ -667,8 +669,10 @@ public: i.dest_o->emitter_ = sender; if (i.args_count == 0) ((void(*)(void *))i.slot)(i.dest); else ((void(*)(void * , T0))i.slot)(i.dest, v0); - i.dest_o->emitter_ = 0; - if (ts) i.dest_o->mutex_.unlock(); + if (i.dest_o->isPIObject()) { + i.dest_o->emitter_ = 0; + if (ts) i.dest_o->mutex_.unlock(); + } } #ifdef PIP_CXX11_SUPPORT } @@ -700,8 +704,10 @@ public: case 1: ((void(*)(void * , T0))i.slot)(i.dest, v0); break; default: ((void(*)(void * , T0, T1))i.slot)(i.dest, v0, v1); break; } - i.dest_o->emitter_ = 0; - if (ts) i.dest_o->mutex_.unlock(); + if (i.dest_o->isPIObject()) { + i.dest_o->emitter_ = 0; + if (ts) i.dest_o->mutex_.unlock(); + } } #ifdef PIP_CXX11_SUPPORT } @@ -735,8 +741,10 @@ public: case 2: ((void(*)(void * , T0, T1))i.slot)(i.dest, v0, v1); break; default: ((void(*)(void * , T0, T1, T2))i.slot)(i.dest, v0, v1, v2); break; } - i.dest_o->emitter_ = 0; - if (ts) i.dest_o->mutex_.unlock(); + if (i.dest_o->isPIObject()) { + i.dest_o->emitter_ = 0; + if (ts) i.dest_o->mutex_.unlock(); + } } #ifdef PIP_CXX11_SUPPORT } @@ -772,8 +780,10 @@ public: case 3: ((void(*)(void * , T0, T1, T2))i.slot)(i.dest, v0, v1, v2); break; default: ((void(*)(void * , T0, T1, T2, T3))i.slot)(i.dest, v0, v1, v2, v3); break; } - i.dest_o->emitter_ = 0; - if (ts) i.dest_o->mutex_.unlock(); + if (i.dest_o->isPIObject()) { + i.dest_o->emitter_ = 0; + if (ts) i.dest_o->mutex_.unlock(); + } } #ifdef PIP_CXX11_SUPPORT }