summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoryugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-12-13 01:59:19 +0000
committeryugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2008-12-13 01:59:19 +0000
commit931439d45423fc5b28e54093ce0016ee570be564 (patch)
tree8288e05258bfaeafa1537bced3cb229e86825f48
parentcd01e5a8f0e71d0629668c5ab8ef50f2442e6c9e (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--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 a8e8379840..315b97f2d5 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 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