From 28e7443f9bcc1fac186394847c1b788e39daed5e Mon Sep 17 00:00:00 2001 From: Andreas Zwinkau Date: Tue, 3 Jul 2012 23:13:15 +0200 Subject: [PATCH] Fix wctomb use wctomb(NULL, _) returns "nonzero if the encoding has nontrivial shift state, or zero if the encoding is stateless." I assume the intentation was to get the size of the target buffer. Use MB_CUR_MAX for this. --- src/keycode.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/keycode.cpp b/src/keycode.cpp index c3c06bb7f..df3ebc9e3 100644 --- a/src/keycode.cpp +++ b/src/keycode.cpp @@ -293,8 +293,7 @@ KeyPress::KeyPress(const irr::SEvent::SKeyInput &in) if (valid_kcode(Key)) { m_name = KeyNames[Key]; } else { - size_t maxlen = wctomb(NULL, Char); - m_name.resize(maxlen+1, '\0'); + m_name.resize(MB_CUR_MAX+1, '\0'); int written = wctomb(&m_name[0], Char); assert (written >= 0 && "unexpected multibyte character"); }