Explorar o código

fix gdextension Object/Node::to_string to check is_valid before returning the result

at best, this results in an empty string, at worst, the result is never
initialised when is_valid is false.
Quentin Quaadgras hai 4 meses
pai
achega
23ffdd79e8
Modificáronse 2 ficheiros con 6 adicións e 2 borrados
  1. 3 1
      core/object/object.cpp
  2. 3 1
      scene/main/node.cpp

+ 3 - 1
core/object/object.cpp

@@ -978,7 +978,9 @@ String Object::to_string() {
 		String ret;
 		String ret;
 		GDExtensionBool is_valid;
 		GDExtensionBool is_valid;
 		_extension->to_string(_extension_instance, &is_valid, &ret);
 		_extension->to_string(_extension_instance, &is_valid, &ret);
-		return ret;
+		if (is_valid) {
+			return ret;
+		}
 	}
 	}
 	return "<" + get_class() + "#" + itos(get_instance_id()) + ">";
 	return "<" + get_class() + "#" + itos(get_instance_id()) + ">";
 }
 }

+ 3 - 1
scene/main/node.cpp

@@ -2864,7 +2864,9 @@ String Node::to_string() {
 		String ret;
 		String ret;
 		GDExtensionBool is_valid;
 		GDExtensionBool is_valid;
 		_get_extension()->to_string(_get_extension_instance(), &is_valid, &ret);
 		_get_extension()->to_string(_get_extension_instance(), &is_valid, &ret);
-		return ret;
+		if (is_valid) {
+			return ret;
+		}
 	}
 	}
 	return (get_name() ? String(get_name()) + ":" : "") + Object::to_string();
 	return (get_name() ? String(get_name()) + ":" : "") + Object::to_string();
 }
 }