mirror of
https://github.com/ruby/ruby.git
synced 2025-09-15 08:33:58 +02:00
io/console: unknown key code for names with nul
* ext/io/console/console.c (console_key_pressed_p): raise the same exception, "unknown virtual key code", for names with nul chars. though console_win32_vk() considers the length and can deal with nul chars, rb_sprintf() raised at PRIsVALUE previously, so quote it if it is unprintable. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54589 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
caaf4f2aea
commit
e78beed499
3 changed files with 28 additions and 2 deletions
|
@ -731,11 +731,14 @@ console_key_pressed_p(VALUE io, VALUE k)
|
|||
const char *kn;
|
||||
if (SYMBOL_P(k)) {
|
||||
k = rb_sym2str(k);
|
||||
kn = RSTRING_PTR(k);
|
||||
}
|
||||
else {
|
||||
kn = StringValuePtr(k);
|
||||
}
|
||||
kn = StringValueCStr(k);
|
||||
t = console_win32_vk(kn, RSTRING_LEN(k));
|
||||
if (!t || (vk = (short)t->vk) == -1) {
|
||||
rb_raise(rb_eArgError, "unknown virtual key code: %"PRIsVALUE, k);
|
||||
rb_raise(rb_eArgError, "unknown virtual key code: % "PRIsVALUE, k);
|
||||
}
|
||||
}
|
||||
return GetKeyState(vk) & 0x80 ? Qtrue : Qfalse;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue