summaryrefslogtreecommitdiffstats
path: root/modules/text_server_adv/text_server_adv.cpp
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2023-08-16 09:16:38 +0200
committerRémi Verschelde <rverschelde@gmail.com>2023-08-16 09:16:38 +0200
commitf8aa7caf1d438f1620f0ebce5585ddff5186676c (patch)
tree6b8cf0e5abac260fba915e52388e5595a8b661ba /modules/text_server_adv/text_server_adv.cpp
parented1180a97e5e1bd333895e7e3937c83622674c34 (diff)
parentd585ca546bf8920ead41bf3d371bfc85fcfba8a1 (diff)
downloadredot-engine-f8aa7caf1d438f1620f0ebce5585ddff5186676c.tar.gz
Merge pull request #80642 from dsnopek/text_server_adv_gdextension-2
Use `String::resize()` and `CharString` in `text_server_adv` again
Diffstat (limited to 'modules/text_server_adv/text_server_adv.cpp')
-rw-r--r--modules/text_server_adv/text_server_adv.cpp8
1 files changed, 3 insertions, 5 deletions
diff --git a/modules/text_server_adv/text_server_adv.cpp b/modules/text_server_adv/text_server_adv.cpp
index 043a33ab35..2a502d081e 100644
--- a/modules/text_server_adv/text_server_adv.cpp
+++ b/modules/text_server_adv/text_server_adv.cpp
@@ -2113,12 +2113,10 @@ Dictionary TextServerAdvanced::_font_get_ot_name_strings(const RID &p_font_rid)
name = vformat("unknown_%d", names[i].name_id);
} break;
}
+ String text;
unsigned int text_size = hb_ot_name_get_utf32(hb_face, names[i].name_id, names[i].language, nullptr, nullptr) + 1;
- // @todo After godot-cpp#1141 is fixed, use text.resize() and write directly to text.wptr() instead of using a temporary buffer.
- char32_t *buffer = memnew_arr(char32_t, text_size);
- hb_ot_name_get_utf32(hb_face, names[i].name_id, names[i].language, &text_size, (uint32_t *)buffer);
- String text(buffer);
- memdelete_arr(buffer);
+ text.resize(text_size);
+ hb_ot_name_get_utf32(hb_face, names[i].name_id, names[i].language, &text_size, (uint32_t *)text.ptrw());
if (!text.is_empty()) {
Dictionary &id_string = names_for_lang[String(hb_language_to_string(names[i].language))];
id_string[name] = text;