From ef25706ed2e1412eb25e5cf108b0c1ffd93fe5bd Mon Sep 17 00:00:00 2001 From: David Capello Date: Sat, 1 Nov 2014 15:46:13 -0300 Subject: [PATCH] Fix crash in SelectAccelerator::KeyField when a Unicode char is pressed The problem is that Accelerator::toString() wasn't returning valid utf-8 strings for Unicode characters. --- src/ui/accelerator.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/ui/accelerator.cpp b/src/ui/accelerator.cpp index 4892d5f3c..b9d5179d1 100644 --- a/src/ui/accelerator.cpp +++ b/src/ui/accelerator.cpp @@ -322,8 +322,11 @@ std::string Accelerator::toString() const if (m_modifiers & kKeySpaceModifier) buf += "Space+"; // Key - if (m_unicodeChar) - buf += (wchar_t)toupper(m_unicodeChar); + if (m_unicodeChar) { + std::wstring wideUnicodeChar; + wideUnicodeChar.push_back((wchar_t)toupper(m_unicodeChar)); + buf += base::to_utf8(wideUnicodeChar); + } else if (m_scancode && m_scancode > 0 && m_scancode < (int)table_size) buf += table[m_scancode]; else if (!buf.empty() && buf[buf.size()-1] == '+')