[ruby-dev:47230] [ruby-trunk - Bug #6456][Third Party's Issue] [readline] Readline.point when history edited

From: "Glass_saga (Masaki Matsushita)" <glass.saga@...>
Date: 2013-04-06 14:11:20 UTC
List: ruby-dev #47230
Issue #6456 has been updated by Glass_saga (Masaki Matsushita).

Status changed from Assigned to Third Party's Issue

Readline.pointの実体はGNU readlineの変数rl_pointですが、次のようなコードで検証したところ

#include <stdlib.h>
#include <stdio.h>
#include <readline/readline.h>
#include <readline/history.h>

int 
main() {
    const char *prompt = "> ";
    char *line = NULL;

    while (line = readline(prompt)) {
        add_history(line);
        printf("%d: \"%s\"\n", rl_point, line);
        free(line);
    }

    clear_history();

    return EXIT_SUCCESS;
}

% ./a.out
> hoge
4: "hoge"
> hogefuga # 履歴から"hoge"を復元し"fuga"を追記
4: "hogefuga"
> hogefuga # 履歴から"hogefuga"を復元
8: "hogefuga"

以上のような挙動を示したので、GNU readline側の仕様ないしバグではないかと思われます。
----------------------------------------
Bug #6456: [readline] Readline.point when history edited
https://bugs.ruby-lang.org/issues/6456#change-38294

Author: no6v (Nobuhiro IMAI)
Status: Third Party's Issue
Priority: Normal
Assignee: kouji (Kouji Takao)
Category: ext
Target version: 
ruby -v: ruby 2.0.0dev (2012-05-19 trunk 35705) [x86_64-linux]


=begin
以下のように、履歴をたどって編集した時に Readline.point の値がおかしくなるようです。

 require "readline"
 
 RUBY_DESCRIPTION  # => "ruby 2.0.0dev (2012-05-19 trunk 35705) [x86_64-linux]"
 Readline::VERSION # => "6.2"
 
 IO.pipe do |r, w|
   Readline.input = r
   w << "123\n\cP456\n\cP\n"
   Readline.readline("", true) # => "123"
   Readline.point              # => 3
   Readline.readline("", true) # => "123456"
   Readline.point              # => 3
   Readline.readline("", true) # => "123456"
   Readline.point              # => 6
 end
 # >> 123
 # >> 123456
 # >> 123456
=end



-- 
http://bugs.ruby-lang.org/

In This Thread

Prev Next