@@ -902,8 +902,9 @@ static void gdextension_string_new_with_wide_chars(GDExtensionUninitializedStrin
902902}
903903
904904static void gdextension_string_new_with_latin1_chars_and_len (GDExtensionUninitializedStringPtr r_dest, const char *p_contents, GDExtensionInt p_size) {
905+ const size_t string_length = p_contents ? (p_size < 0 ? strlen (p_contents) : strnlen (p_contents, p_size)) : 0 ;
905906 String *dest = memnew_placement (r_dest, String);
906- dest->append_latin1 (Span (p_contents, p_contents ? _strlen_clipped (p_contents, p_size) : 0 ));
907+ dest->append_latin1 (Span (p_contents, string_length ));
907908}
908909
909910static void gdextension_string_new_with_utf8_chars_and_len (GDExtensionUninitializedStringPtr r_dest, const char *p_contents, GDExtensionInt p_size) {
@@ -927,8 +928,9 @@ static GDExtensionInt gdextension_string_new_with_utf16_chars_and_len2(GDExtensi
927928}
928929
929930static void gdextension_string_new_with_utf32_chars_and_len (GDExtensionUninitializedStringPtr r_dest, const char32_t *p_contents, GDExtensionInt p_char_count) {
931+ const size_t string_length = p_contents ? (p_char_count < 0 ? strlen (p_contents) : strnlen (p_contents, p_char_count)) : 0 ;
930932 String *string = memnew_placement (r_dest, String);
931- string->append_utf32 (Span (p_contents, p_contents ? _strlen_clipped (p_contents, p_char_count) : 0 ));
933+ string->append_utf32 (Span (p_contents, string_length ));
932934}
933935
934936static void gdextension_string_new_with_wide_chars_and_len (GDExtensionUninitializedStringPtr r_dest, const wchar_t *p_contents, GDExtensionInt p_char_count) {
@@ -938,8 +940,9 @@ static void gdextension_string_new_with_wide_chars_and_len(GDExtensionUninitiali
938940 dest->append_utf16 ((const char16_t *)p_contents, p_char_count);
939941 } else {
940942 // wchar_t is 32 bit (UTF-32).
943+ const size_t string_length = p_contents ? (p_char_count < 0 ? strlen (p_contents) : strnlen ((const char32_t *)p_contents, p_char_count)) : 0 ;
941944 String *string = memnew_placement (r_dest, String);
942- string->append_utf32 (Span ((const char32_t *)p_contents, p_contents ? _strlen_clipped (( const char32_t *)p_contents, p_char_count) : 0 ));
945+ string->append_utf32 (Span ((const char32_t *)p_contents, string_length ));
943946 }
944947}
945948
0 commit comments