Browse Source

Avoid potential crash on signal disconnection

Pedro J. Estébanez 1 year ago
parent
commit
32b7f835d8
1 changed files with 5 additions and 1 deletions
  1. 5 1
      core/object/object.cpp

+ 5 - 1
core/object/object.cpp

@@ -2097,7 +2097,11 @@ Object::~Object() {
 	// Disconnect signals that connect to this object.
 	while (connections.size()) {
 		Connection c = connections.front()->get();
-		bool disconnected = c.signal.get_object()->_disconnect(c.signal.get_name(), c.callable, true);
+		Object *obj = c.callable.get_object();
+		bool disconnected = false;
+		if (likely(obj)) {
+			disconnected = c.signal.get_object()->_disconnect(c.signal.get_name(), c.callable, true);
+		}
 		if (unlikely(!disconnected)) {
 			// If the disconnect has failed, abandon the connection to avoid getting trapped in an infinite loop here.
 			connections.pop_front();