不知道从哪个版本起,RubyInstaller的irb就开始有一个Bug,表现为输入或粘贴某些中文字符进去的时候,irb会无提示退出。因为不常遇到,所以一直都懒得查。前两天精神来了就追了一下,发现问题出在rb-readline。
rbreadline.rb文件readline_internal_charloop函数,大概4635行:
rl_setstate(RL_STATE_READCMD) c = rl_read_key() rl_unsetstate(RL_STATE_READCMD) # look at input.c:rl_getc() for the circumstances under which this will #be returned; punt immediately on read error without converting it to #a newline. if (c == READERR) eof_found = true break end
READERR的值是0xFE.chr,而GBK和BIG5的编码范围都包括了0xFE,于是这又是一个编码问题。Bug已经提交,我是觉得直接把整个if都删掉就好了,看作者打算怎么改吧。
没有评论 :
发表评论