diff --git a/src/gui/guiConfirmRegistration.cpp b/src/gui/guiConfirmRegistration.cpp index 92ca94d425c0..fea9f5cda137 100644 --- a/src/gui/guiConfirmRegistration.cpp +++ b/src/gui/guiConfirmRegistration.cpp @@ -99,9 +99,10 @@ void GUIConfirmRegistration::regenerateGui(v2u32 screensize) snprintf(info_text_buf, sizeof(info_text_buf), info_text_template.c_str(), address.c_str(), m_playername.c_str()); - gui::IGUIEditBox *e = new gui::intlGUIEditBox( - utf8_to_wide_c(info_text_buf), true, Environment, this, - ID_message, rect2, false, true); + wchar_t *info_text_buf_wide = utf8_to_wide_c(info_text_buf); + gui::IGUIEditBox *e = new gui::intlGUIEditBox(info_text_buf_wide, true, + Environment, this, ID_message, rect2, false, true); + delete[] info_text_buf_wide; e->drop(); e->setMultiLine(true); e->setWordWrap(true); diff --git a/src/util/string.cpp b/src/util/string.cpp index 25f573420114..388e8d293c0b 100644 --- a/src/util/string.cpp +++ b/src/util/string.cpp @@ -167,6 +167,8 @@ std::string wide_to_utf8(const std::wstring &input) #endif // _WIN32 +// You must free the returned string! +// The returned string is allocated using new wchar_t *utf8_to_wide_c(const char *str) { std::wstring ret = utf8_to_wide(std::string(str));