diff options
| author | yugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-12-13 01:59:19 +0000 |
|---|---|---|
| committer | yugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-12-13 01:59:19 +0000 |
| commit | 931439d45423fc5b28e54093ce0016ee570be564 (patch) | |
| tree | 8288e05258bfaeafa1537bced3cb229e86825f48 | |
| parent | cd01e5a8f0e71d0629668c5ab8ef50f2442e6c9e (diff) | |
merges r20680 and r20682 from trunk into ruby_1_9_1.
* ext/readline/readline.c
(readline_s_get_completion_append_character): uses locale
encoding but not ASCII-8BIT.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_1@20709 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
| -rw-r--r-- | ChangeLog | 6 | ||||
| -rw-r--r-- | ext/readline/readline.c | 7 | ||||
| -rw-r--r-- | test/readline/test_readline.rb | 18 |
3 files changed, 21 insertions, 10 deletions
@@ -1,3 +1,9 @@ +Sat Dec 13 01:10:03 2008 TAKAO Kouji <kouji@takao7.net> + + * ext/readline/readline.c + (readline_s_get_completion_append_character): uses locale + encoding but not ASCII-8BIT. + Fri Dec 12 19:24:47 2008 Yuki Sonoda (Yugui) <yugui@yugui.jp> * common.mk (run, runruby, parse, gdb, gdb-ruby): you can also run diff --git a/ext/readline/readline.c b/ext/readline/readline.c index 6100633f20..87a1ff0371 100644 --- a/ext/readline/readline.c +++ b/ext/readline/readline.c @@ -602,15 +602,14 @@ static VALUE readline_s_get_completion_append_character(VALUE self) { #ifdef HAVE_RL_COMPLETION_APPEND_CHARACTER - VALUE str; + char buf[1]; rb_secure(4); if (rl_completion_append_character == '\0') return Qnil; - str = rb_str_new(0, 1); - RSTRING_PTR(str)[0] = rl_completion_append_character; - return str; + buf[0] = (char) rl_completion_append_character; + return rb_locale_str_new(buf, 1); #else rb_notimplement(); return Qnil; /* not reached */ diff --git a/test/readline/test_readline.rb b/test/readline/test_readline.rb index 36aadd92d7..cf809e20d7 100644 --- a/test/readline/test_readline.rb +++ b/test/readline/test_readline.rb @@ -166,12 +166,18 @@ class TestReadline < Test::Unit::TestCase def test_completion_append_character begin - Readline.completion_append_character = "x" - assert_equal("x", Readline.completion_append_character) - Readline.completion_append_character = "xyz" - assert_equal("x", Readline.completion_append_character) - Readline.completion_append_character = nil - assert_equal(nil, Readline.completion_append_character) + enc = Encoding.default_internal || Encoding.find("locale") + data_expected = [ + ["x", "x"], + ["xyx", "x"], + [" ", " "], + ["\t", "\t"], + ] + data_expected.each do |(data, expected)| + Readline.completion_append_character = data + assert_equal(expected, Readline.completion_append_character) + assert_equal(enc, Readline.completion_append_character.encoding) + end Readline.completion_append_character = "" assert_equal(nil, Readline.completion_append_character) rescue NotImplementedError |
