Skip to content

Commit cbcb9fa

Browse files
committed
Rename _strlen_clipped to strnlen (and use the system equivalent for char * inputs).
1 parent ba34829 commit cbcb9fa

File tree

2 files changed

+9
-21
lines changed

2 files changed

+9
-21
lines changed

core/extension/gdextension_interface.cpp

+6-3
Original file line numberDiff line numberDiff line change
@@ -904,8 +904,9 @@ static void gdextension_string_new_with_wide_chars(GDExtensionUninitializedStrin
904904
}
905905

906906
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;
907908
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));
909910
}
910911

911912
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
929930
}
930931

931932
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;
932934
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));
934936
}
935937

936938
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
940942
dest->append_utf16((const char16_t *)p_contents, p_char_count);
941943
} else {
942944
// 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;
943946
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));
945948
}
946949
}
947950

core/string/ustring.h

+3-18
Original file line numberDiff line numberDiff line change
@@ -73,24 +73,9 @@ constexpr size_t strlen(const wchar_t *str) {
7373
#endif
7474
}
7575

76-
constexpr size_t _strlen_clipped(const char *p_str, int p_clip_to_len) {
77-
if (p_clip_to_len < 0) {
78-
return strlen(p_str);
79-
}
80-
81-
int len = 0;
82-
while (len < p_clip_to_len && *(p_str++) != 0) {
83-
len++;
84-
}
85-
return len;
86-
}
87-
88-
constexpr size_t _strlen_clipped(const char32_t *p_str, int p_clip_to_len) {
89-
if (p_clip_to_len < 0) {
90-
return strlen(p_str);
91-
}
92-
93-
int len = 0;
76+
// strnlen equivalent function for char32_t * arguments.
77+
constexpr size_t strnlen(const char32_t *p_str, size_t p_clip_to_len) {
78+
size_t len = 0;
9479
while (len < p_clip_to_len && *(p_str++) != 0) {
9580
len++;
9681
}

0 commit comments

Comments
 (0)