From: tommy@... Date: 2017-09-30T14:33:20+00:00 Subject: [ruby-dev:50271] [Ruby trunk Bug#13957] readline が SHARABLE_MIDDLE_SUBSTRING=1 を考慮していない Issue #13957 has been reported by tommy (Masahiro Tomita). ---------------------------------------- Bug #13957: readline が SHARABLE_MIDDLE_SUBSTRING=1 を考慮していない https://bugs.ruby-lang.org/issues/13957 * Author: tommy (Masahiro Tomita) * Status: Open * Priority: Normal * Assignee: * Target version: * ruby -v: ruby 2.5.0dev (2017-09-29 trunk 60062) [x86_64-linux] * Backport: 2.3: UNKNOWN, 2.4: UNKNOWN ---------------------------------------- SHARABLE_MIDDLE_SUBSTRING=1 でコンパイルしたRubyで、Readline.insert_text の文字列が正しく扱われません。 ``` % ruby -rreadline -e 'p Readline.insert_text(("a"*100)[0,24]).line_buffer' "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" ``` 次のパッチで直ると思います。 ```diff diff --git a/ext/readline/readline.c b/ext/readline/readline.c index 253798f9e6..deebc282f5 100644 --- a/ext/readline/readline.c +++ b/ext/readline/readline.c @@ -93,6 +93,7 @@ static char **readline_attempted_completion_function(const char *text, #define OutputStringValue(str) do {\ SafeStringValue(str);\ + StringValueCStr(str);\ (str) = rb_str_conv_enc((str), rb_enc_get(str), rb_locale_encoding());\ } while (0)\ ``` パッチ適用後 ``` % ruby -rreadline -e 'p Readline.insert_text(("a"*100)[0,24]).line_buffer' "aaaaaaaaaaaaaaaaaaaaaaaa" ``` -- https://bugs.ruby-lang.org/