diff --git a/Source/Core/Common/Src/MsgHandler.cpp b/Source/Core/Common/Src/MsgHandler.cpp index 231d9c34b4..63406c6312 100644 --- a/Source/Core/Common/Src/MsgHandler.cpp +++ b/Source/Core/Common/Src/MsgHandler.cpp @@ -25,7 +25,7 @@ bool DefaultMsgHandler(const char* caption, const char* text, bool yes_no, int S static MsgAlertHandler msg_handler = DefaultMsgHandler; static bool AlertEnabled = true; -const char* DefaultStringTranslator(const char* text); +std::string DefaultStringTranslator(const char* text); static StringTranslator str_translator = DefaultStringTranslator; /* Select which of these functions that are used for message boxes. If @@ -62,9 +62,9 @@ bool MsgAlert(bool yes_no, int Style, const char* format, ...) if (!info_caption.length()) { - info_caption = std::string(str_translator(_trans("Information"))); - ques_caption = std::string(str_translator(_trans("Question"))); - warn_caption = std::string(str_translator(_trans("Warning"))); + info_caption = str_translator(_trans("Information")); + ques_caption = str_translator(_trans("Question")); + warn_caption = str_translator(_trans("Warning")); } switch(Style) @@ -80,11 +80,9 @@ bool MsgAlert(bool yes_no, int Style, const char* format, ...) break; } - const char *tr_format = str_translator(format); - va_list args; va_start(args, format); - CharArrayFromFormatV(buffer, 2047, tr_format, args); + CharArrayFromFormatV(buffer, 2047, str_translator(format).c_str(), args); va_end(args); ERROR_LOG(MASTER_LOG, "%s: %s", caption.c_str(), buffer); @@ -113,7 +111,7 @@ bool DefaultMsgHandler(const char* caption, const char* text, bool yes_no, int S } // Default (non) translator -const char* DefaultStringTranslator(const char* text) +std::string DefaultStringTranslator(const char* text) { return text; } diff --git a/Source/Core/Common/Src/MsgHandler.h b/Source/Core/Common/Src/MsgHandler.h index 4924277374..0598a8b791 100644 --- a/Source/Core/Common/Src/MsgHandler.h +++ b/Source/Core/Common/Src/MsgHandler.h @@ -17,6 +17,9 @@ #ifndef _MSGHANDLER_H_ #define _MSGHANDLER_H_ + +#include + // Message alerts enum MSG_TYPE { @@ -27,7 +30,7 @@ enum MSG_TYPE typedef bool (*MsgAlertHandler)(const char* caption, const char* text, bool yes_no, int Style); -typedef const char * (*StringTranslator)(const char* text); +typedef std::string (*StringTranslator)(const char* text); void RegisterMsgAlertHandler(MsgAlertHandler handler); void RegisterStringTranslator(StringTranslator translator); diff --git a/Source/Core/DolphinWX/Src/Main.cpp b/Source/Core/DolphinWX/Src/Main.cpp index 7a54d2510c..10e5987086 100644 --- a/Source/Core/DolphinWX/Src/Main.cpp +++ b/Source/Core/DolphinWX/Src/Main.cpp @@ -56,7 +56,7 @@ END_EVENT_TABLE() #include bool wxMsgAlert(const char*, const char*, bool, int); -const char *wxStringTranslator(const char *); +std::string wxStringTranslator(const char *); CFrame* main_frame = NULL; @@ -471,12 +471,9 @@ bool wxMsgAlert(const char* caption, const char* text, bool yes_no, int /*Style* #endif } -const char *wxStringTranslator(const char *text) +std::string wxStringTranslator(const char *text) { - static char buffer[2048]; - snprintf(buffer, 2048, "%s", - (const char *)wxString(wxGetTranslation(wxString::From8BitData(text))).ToUTF8()); - return buffer; + return (const char *)wxString(wxGetTranslation(wxString::From8BitData(text))).ToUTF8(); } // Accessor for the main window class