1.9のCurses::Window#getchがStringを返したりFixnumを返したりする

英字キーだとString,Returnや矢印キーではFixnumが返ってくる.1.8ではどちらもFixnum.
バグじゃね?どっちかに統一すべきだろ…と思ってたらこんなソース.

/* def getch */
static VALUE
curses_getch(VALUE obj)
{
    int c;

    rb_read_check(stdin);
    curses_stdscr();
    c = getch();
    if (c == EOF) return Qnil;
    if (rb_isprint(c)) {
	char ch = (char)c;

	return rb_locale_str_new(&ch, 1);
    }
    return UINT2NUM(c);
}

どういうことなの…