summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRémi Verschelde <remi@verschelde.fr>2022-03-28 08:53:40 +0200
committerGitHub <noreply@github.com>2022-03-28 08:53:40 +0200
commit6a74d81e025bea79dbbc35ad016ee4f891ff2945 (patch)
tree75869974ea7abb5e5fe3152dd8f91f6701551d81
parent00e9170812a528c6cb33e5a2b197f2055e528692 (diff)
parentf88bdac40305b824a9ceb6ed1dfb2dd5133c3e27 (diff)
Merge pull request #59600 from Bromeon/feature/extension_to_string
GDExtension: change to_string signature to accept `GDNativeStringPtr` instead of returning `const char*`
-rw-r--r--core/extension/gdnative_interface.h2
-rw-r--r--core/object/object.cpp4
2 files changed, 4 insertions, 2 deletions
diff --git a/core/extension/gdnative_interface.h b/core/extension/gdnative_interface.h
index cc2957ec56..c86bee316d 100644
--- a/core/extension/gdnative_interface.h
+++ b/core/extension/gdnative_interface.h
@@ -208,7 +208,7 @@ typedef struct {
typedef const GDNativePropertyInfo *(*GDNativeExtensionClassGetPropertyList)(GDExtensionClassInstancePtr p_instance, uint32_t *r_count);
typedef void (*GDNativeExtensionClassFreePropertyList)(GDExtensionClassInstancePtr p_instance, const GDNativePropertyInfo *p_list);
typedef void (*GDNativeExtensionClassNotification)(GDExtensionClassInstancePtr p_instance, int32_t p_what);
-typedef const char *(*GDNativeExtensionClassToString)(GDExtensionClassInstancePtr p_instance);
+typedef void (*GDNativeExtensionClassToString)(GDExtensionClassInstancePtr p_instance, GDNativeStringPtr p_out);
typedef void (*GDNativeExtensionClassReference)(GDExtensionClassInstancePtr p_instance);
typedef void (*GDNativeExtensionClassUnreference)(GDExtensionClassInstancePtr p_instance);
typedef void (*GDNativeExtensionClassCallVirtual)(GDExtensionClassInstancePtr p_instance, const GDNativeTypePtr *p_args, GDNativeTypePtr r_ret);
diff --git a/core/object/object.cpp b/core/object/object.cpp
index 226d3ef0b8..7db62fdc5c 100644
--- a/core/object/object.cpp
+++ b/core/object/object.cpp
@@ -865,7 +865,9 @@ String Object::to_string() {
}
}
if (_extension && _extension->to_string) {
- return _extension->to_string(_extension_instance);
+ String ret;
+ _extension->to_string(_extension_instance, &ret);
+ return ret;
}
return "[" + get_class() + ":" + itos(get_instance_id()) + "]";
}