From 6f05d204809749101b5e52149c3ab75b4ac2f303 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: Sat, 10 Feb 2018 19:41:05 +0000 Subject: [PATCH] git-svn-id: svn://db.shs.com.ru/pip@595 12ceb7fc-bf1f-11e4-8940-5bc7170c53b5 --- src_main/core/piobject.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src_main/core/piobject.cpp b/src_main/core/piobject.cpp index 45f386b5..1f1451d0 100755 --- a/src_main/core/piobject.cpp +++ b/src_main/core/piobject.cpp @@ -360,9 +360,13 @@ void PIObject::piDisconnect(PIObject * src) { PIMutexLocker _ml(src->mutex_connect); PIVector cv = src->connectors.toVector(); piForeach (PIObject * o, cv) { - if (o == src) continue; + //piCout << "disconnect"<< src->className()<< o->className(); + if (!o || (o == src)) continue; + if (!o->isPIObject()) continue; #ifndef ANDROID +# ifndef MAC_OS PIMutexLocker _mld(o->mutex_connect, src != o); +# endif #endif PIVector<__Connection> & oc(o->connections); for (int i = 0; i < oc.size_s(); ++i) { @@ -373,8 +377,10 @@ void PIObject::piDisconnect(PIObject * src) { } } } - piForeachC (PIObject::__Connection & c, src->connections) + piForeachC (PIObject::__Connection & c, src->connections) { + if (!c.dest_o->isPIObject()) continue; c.dest_o->connectors.remove(src); + } src->connections.clear(); }