@@ -904,8 +904,9 @@ static void gdextension_string_new_with_wide_chars(GDExtensionUninitializedStrin
904
904
}
905
905
906
906
static void gdextension_string_new_with_latin1_chars_and_len (GDExtensionUninitializedStringPtr r_dest, const char *p_contents, GDExtensionInt p_size) {
907
+ const size_t string_length = p_contents ? (p_size < 0 ? strlen (p_contents) : strnlen (p_contents, p_size)) : 0 ;
907
908
String *dest = memnew_placement (r_dest, String);
908
- dest->append_latin1 (Span (p_contents, p_contents ? _strlen_clipped (p_contents, p_size) : 0 ));
909
+ dest->append_latin1 (Span (p_contents, string_length ));
909
910
}
910
911
911
912
static void gdextension_string_new_with_utf8_chars_and_len (GDExtensionUninitializedStringPtr r_dest, const char *p_contents, GDExtensionInt p_size) {
@@ -929,8 +930,9 @@ static GDExtensionInt gdextension_string_new_with_utf16_chars_and_len2(GDExtensi
929
930
}
930
931
931
932
static void gdextension_string_new_with_utf32_chars_and_len (GDExtensionUninitializedStringPtr r_dest, const char32_t *p_contents, GDExtensionInt p_char_count) {
933
+ const size_t string_length = p_contents ? (p_char_count < 0 ? strlen (p_contents) : strnlen (p_contents, p_char_count)) : 0 ;
932
934
String *string = memnew_placement (r_dest, String);
933
- string->append_utf32 (Span (p_contents, p_contents ? _strlen_clipped (p_contents, p_char_count) : 0 ));
935
+ string->append_utf32 (Span (p_contents, string_length ));
934
936
}
935
937
936
938
static void gdextension_string_new_with_wide_chars_and_len (GDExtensionUninitializedStringPtr r_dest, const wchar_t *p_contents, GDExtensionInt p_char_count) {
@@ -940,8 +942,9 @@ static void gdextension_string_new_with_wide_chars_and_len(GDExtensionUninitiali
940
942
dest->append_utf16 ((const char16_t *)p_contents, p_char_count);
941
943
} else {
942
944
// wchar_t is 32 bit (UTF-32).
945
+ const size_t string_length = p_contents ? (p_char_count < 0 ? strlen (p_contents) : strnlen ((const char32_t *)p_contents, p_char_count)) : 0 ;
943
946
String *string = memnew_placement (r_dest, String);
944
- string->append_utf32 (Span ((const char32_t *)p_contents, p_contents ? _strlen_clipped (( const char32_t *)p_contents, p_char_count) : 0 ));
947
+ string->append_utf32 (Span ((const char32_t *)p_contents, string_length ));
945
948
}
946
949
}
947
950
0 commit comments