summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--ext/readline/readline.c7
-rw-r--r--test/readline/test_readline.rb18
3 files changed, 21 insertions, 10 deletions
diff --git a/ChangeLog b/ChangeLog
index a8e837984..315b97f2d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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 6100633f2..87a1ff037 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 36aadd92d..cf809e20d 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