From 1bc86c2626d37553294e9a3c2894b0f5828ec5e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pa=CC=84vels=20Nadtoc=CC=8Cajevs?= <7645683+bruvzg@users.noreply.github.com> Date: Fri, 7 Feb 2025 10:19:19 +0200 Subject: [PATCH] Fix `PackedStringArray.to_byte_array()` to return UTF-8 encoded data instead of pointers. --- core/variant/variant_call.cpp | 14 +++++++++++++- doc/classes/PackedStringArray.xml | 2 +- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/core/variant/variant_call.cpp b/core/variant/variant_call.cpp index 5f6eb8399a2..75216329740 100644 --- a/core/variant/variant_call.cpp +++ b/core/variant/variant_call.cpp @@ -1034,6 +1034,18 @@ struct _VariantCall { return len; } + static PackedByteArray func_PackedStringArray_to_byte_array(PackedStringArray *p_instance) { + PackedByteArray ret; + uint64_t size = p_instance->size(); + const String *r = p_instance->ptr(); + + for (uint64_t i = 0; i < size; i++) { + ret.append_array(r[i].to_utf8_buffer()); + ret.append(0); + } + return ret; + } + static void func_Callable_call(Variant *v, const Variant **p_args, int p_argcount, Variant &r_ret, Callable::CallError &r_error) { Callable *callable = VariantGetInternalPtr::get_ptr(v); callable->callp(p_args, p_argcount, r_ret, r_error); @@ -2577,7 +2589,7 @@ static void _register_variant_builtin_methods_array() { bind_method(PackedStringArray, has, sarray("value"), varray()); bind_method(PackedStringArray, reverse, sarray(), varray()); bind_method(PackedStringArray, slice, sarray("begin", "end"), varray(INT_MAX)); - bind_method(PackedStringArray, to_byte_array, sarray(), varray()); + bind_function(PackedStringArray, to_byte_array, _VariantCall::func_PackedStringArray_to_byte_array, sarray(), varray()); bind_method(PackedStringArray, sort, sarray(), varray()); bind_method(PackedStringArray, bsearch, sarray("value", "before"), varray(true)); bind_method(PackedStringArray, duplicate, sarray(), varray()); diff --git a/doc/classes/PackedStringArray.xml b/doc/classes/PackedStringArray.xml index 511850d6450..df8be476a51 100644 --- a/doc/classes/PackedStringArray.xml +++ b/doc/classes/PackedStringArray.xml @@ -193,7 +193,7 @@ - Returns a [PackedByteArray] with each string encoded as bytes. + Returns a [PackedByteArray] with each string encoded as UTF-8. Strings are [code]null[/code] terminated.