[#45637] [ruby-trunk - Feature #6440][Open] 引数にIOを渡した場合のMarshal.loadにバッファを持たせたい — "Glass_saga (Masaki Matsushita)" <glass.saga@...>

14 messages 2012/05/16

[#45670] [ruby-trunk - Bug #6479][Open] ipaddr.rbの受け付ける書式が、プラットフォームによって異なる — "kachick (Kenichi Kamiya)" <kachick1+ruby@...>

9 messages 2012/05/22

[ruby-dev:45628] [ruby-trunk - Bug #5423] readlineの入力待機中に端末のウィンドウサイズ変更すると入力内容が乱れる

From: "kouji (Kouji Takao)" <kouji.takao@...>
Date: 2012-05-07 01:22:51 UTC
List: ruby-dev #45628
Issue #5423 has been updated by kouji (Kouji Takao).

Category set to ext

mameさん、naruseさん、情報ありがとうございます。
こちらの環境では再現しないため、どうにも困っていました。
いただいた情報を元に少し調べてみます。
Readlineのバージョン(5.X, 6.1, 6.2)も関係があるのかもしれませんね。

なんにせよ、SEGVとかregressionは早くなんとかしますね。
----------------------------------------
Bug #5423: readlineの入力待機中に端末のウィンドウサイズ変更すると入力内容が乱れる
https://bugs.ruby-lang.org/issues/5423#change-26504

Author: matsuu (Takuto Matsuu)
Status: Assigned
Priority: Normal
Assignee: kouji (Kouji Takao)
Category: ext
Target version: 
ruby -v: ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-linux] 


Readline.readline("> ")の入力待機中にターミナルのウィンドウサイズを変更すると、
入力内容がウィンドウサイズ変更に合わせて変化せず、画面が乱れます。

readlineがSIGWINCHに反応しないように設定されているのが原因のようです。

revision 24140で追加されたrl_catch_sigwinch = 0;が該当部分になります。
rl_catch_signals=0を設定した場合でも、SIGWINCHは反応すべき(rl_catch_sigwinch=1)だと思います。

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 24139)
+++ ChangeLog	(revision 24140)
@@ -1,3 +1,11 @@
+Thu Jul 16 12:42:10 2009  NARUSE, Yui  <naruse@ruby-lang.org>
+
+	* ext/readline/readline.c (readline_readline): rl_free_line_state
+	  before rl_cleanup_after_signal.
+
+	* ext/readline/readline.c (Init_readline): set rl_catch_signals and
+	  rl_catch_signwinch as 0. [ruby-core:21884]
+
 Thu Jul 16 08:59:22 2009  Koichi Sasada  <ko1@atdot.net>
 
 	* node.h, vm_core.h, variable.c: rename global_entry to rb_global_entry.
Index: ext/readline/readline.c
===================================================================
--- ext/readline/readline.c	(revision 24139)
+++ ext/readline/readline.c	(revision 24140)
@@ -253,6 +253,7 @@
     if (status) {
 #if defined HAVE_RL_CLEANUP_AFTER_SIGNAL
         /* restore terminal mode and signal handler*/
+        rl_free_line_state();
         rl_cleanup_after_signal();
 #elif defined HAVE_RL_DEPREP_TERM_FUNCTION
         /* restore terminal mode */
@@ -1450,6 +1451,8 @@
 #elif defined HAVE_RL_EVENT_HOOK
     rl_event_hook = readline_event;
 #endif
+    rl_catch_signals = 0;
+    rl_catch_sigwinch = 0;
 #ifdef HAVE_RL_CLEAR_SIGNALS
     rl_clear_signals();
 #endif



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

In This Thread

Prev Next