浏览代码

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 4 月之前
父节点
当前提交
23ffdd79e8
共有 2 个文件被更改,包括 6 次插入2 次删除
  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;
 		GDExtensionBool is_valid;
 		_extension->to_string(_extension_instance, &is_valid, &ret);
-		return ret;
+		if (is_valid) {
+			return ret;
+		}
 	}
 	return "<" + get_class() + "#" + itos(get_instance_id()) + ">";
 }

+ 3 - 1
scene/main/node.cpp

@@ -2864,7 +2864,9 @@ String Node::to_string() {
 		String ret;
 		GDExtensionBool is_valid;
 		_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();
 }