2012年6月25日星期一

rb-readline

不知道从哪个版本起,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都删掉就好了,看作者打算怎么改吧。

没有评论 :