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 }