| Index: ui/events/keycodes/keyboard_code_conversion_x.cc
|
| diff --git a/ui/events/keycodes/keyboard_code_conversion_x.cc b/ui/events/keycodes/keyboard_code_conversion_x.cc
|
| index 8e420ab29193b7c769b2e4b703522db0d48c6302..5d6c6ace60609550e06a34e47da506a94bef181b 100644
|
| --- a/ui/events/keycodes/keyboard_code_conversion_x.cc
|
| +++ b/ui/events/keycodes/keyboard_code_conversion_x.cc
|
| @@ -13,6 +13,7 @@
|
| #include "base/basictypes.h"
|
| #include "base/logging.h"
|
| #include "base/strings/stringprintf.h"
|
| +#include "base/strings/sys_string_conversions.h"
|
| #include "base/strings/utf_string_conversions.h"
|
| #include "ui/events/keycodes/dom4/keycode_converter.h"
|
|
|
| @@ -436,9 +437,11 @@ uint16 GetCharacterFromXEvent(XEvent* xev) {
|
| int bytes_written = XLookupString(&xev->xkey, buf, 6, NULL, NULL);
|
| DCHECK_LE(bytes_written, 6);
|
|
|
| - base::string16 result;
|
| - return (bytes_written > 0 && base::UTF8ToUTF16(buf, bytes_written, &result) &&
|
| - result.length() == 1) ? result[0] : 0;
|
| + if (bytes_written <= 0)
|
| + return 0;
|
| + const base::string16& result = base::WideToUTF16(
|
| + base::SysNativeMBToWide(base::StringPiece(buf, bytes_written)));
|
| + return result.length() == 1 ? result[0] : 0;
|
| }
|
|
|
| unsigned int DefaultXKeysymFromHardwareKeycode(unsigned int hardware_code) {
|
|
|