[#15067] rb_eval_string — OJ <oj@...7.com>

OJです。

39 messages 2001/11/08
[#15068] Re: rb_eval_string — nobu.nakada@... 2001/11/08

なかだです。

[#15069] Re: rb_eval_string — OJ <oj@...7.com> 2001/11/08

OJです。

[#15071] Re: rb_eval_string — nobu.nakada@... 2001/11/09

なかだです。

[#15077] Re: rb_eval_string — OJ <oj@...7.com> 2001/11/09

OJです。

[#15078] Re: rb_eval_string — WATANABE Hirofumi <eban@...> 2001/11/09

わたなべです。

[#15083] Re: rb_eval_string — "U.Nakamura" <usa@...> 2001/11/09

こんにちは、なかむら(う)です。

[#15088] Re: rb_eval_string — nobu.nakada@... 2001/11/09

なかだです。

[#15089] Re: rb_eval_string — "U.Nakamura" <usa@...> 2001/11/09

こんにちは、なかむら(う)です。

[#15092] Re: rb_eval_string — nobu.nakada@... 2001/11/09

なかだです。

[#15096] Re: rb_eval_string — "U.Nakamura" <usa@...> 2001/11/09

こんにちは、なかむら(う)です。

[#15109] Re: rb_eval_string — WATANABE Hirofumi <eban@...> 2001/11/12

わたなべです。

[#15112] Re: rb_eval_string — "U.Nakamura" <usa@...> 2001/11/12

こんにちは、なかむら(う)です。

[#15114] Re: rb_eval_string — WATANABE Hirofumi <eban@...> 2001/11/12

わたなべです。

[#15115] Re: rb_eval_string — "U.Nakamura" <usa@...> 2001/11/12

こんにちは、なかむら(う)です。

[#15119] Re: rb_eval_string — WATANABE Hirofumi <eban@...> 2001/11/12

わたなべです。

[#15121] Re: rb_eval_string — "U.Nakamura" <usa@...> 2001/11/12

こんにちは、なかむら(う)です。

[#15124] Re: rb_eval_string — WATANABE Hirofumi <eban@...> 2001/11/12

わたなべです。

[#15126] Re: rb_eval_string — "U.Nakamura" <usa@...> 2001/11/12

こんにちは、なかむら(う)です。

[#15174] strange behavior about PTY.spawn — akira yamada / やまだあきら <akira@...>

18 messages 2001/11/15
[#15176] Re: strange behavior about PTY.spawn — matz@... (Yukihiro Matsumoto) 2001/11/15

まつもと ゆきひろです

[#15251] Re: [ruby-ext:01999] Re: syslog module is becoming ready — "Akinori MUSHA" <knu@...>

 というわけで 1.7 に syslog モジュールを入れました。

43 messages 2001/11/26

[#15270] ruby on NetBSD — "U.Nakamura" <usa@...>

こんにちは、なかむら(う)です。

25 messages 2001/11/28
[#15271] Re: ruby on NetBSD — Takahiro Kambe <taca@...> 2001/11/28

In message <20011128181510.3D11.USA@osb.att.ne.jp>

[#15272] Re: ruby on NetBSD — "U.Nakamura" <usa@...> 2001/11/28

こんにちは、なかむら(う)です。

[#15278] Re: ruby on NetBSD — Takahiro Kambe <taca@...> 2001/11/28

In message <20011128182726.3D14.USA@osb.att.ne.jp>

[#15296] Re: ruby on NetBSD — "U.Nakamura" <usa@...> 2001/11/29

こんにちは、なかむら(う)です。

[#15298] time.rb — Tanaka Akira <akr@...17n.org>

というわけで、timex.rb 改め time.rb が rough に入ったのでご意見募集です。

27 messages 2001/11/29

[ruby-dev:15101] [bug?] pty causes segv by getting SIGINT

From: akira yamada / やまだあきら <akira@...>
Date: 2001-11-11 12:04:13 UTC
List: ruby-dev #15101
ptyモジュールを使っていて PTY.spawn {...} が生きているときに
C-cでわり込みをかけるとsegvすることがあるようです. 
で, こんな感じにすると現象自体はおさまります. どんなものでしょうか?

Index: ext/pty/pty.c
===================================================================
RCS file: /home/akira/cvs/ruby-src/cvs/ruby/ext/pty/pty.c,v
retrieving revision 1.5.2.2
diff -u -r1.5.2.2 pty.c
--- ext/pty/pty.c	7 May 2001 06:55:42 -0000	1.5.2.2
+++ ext/pty/pty.c	11 Nov 2001 11:57:28 -0000
@@ -426,7 +426,7 @@
 pty_getpty(self, shell)
     VALUE self, shell;
 {
-    VALUE res;
+    VALUE res, command;
     struct pty_info info;
     OpenFile *wfptr,*rfptr;
     NEWOBJ(rport, struct RFile);
@@ -442,15 +442,23 @@
     OBJSETUP(wport, rb_cFile, T_FILE);
     MakeOpenFile(wport, wfptr);
 
-    establishShell(RSTRING(shell)->ptr,&info);
+    if (TYPE(shell) == T_STRING)
+	command = shell;
+    else if (TYPE(shell) == T_ARRAY)
+	command = rb_ary_join(shell,rb_str_new2(" "));
+    else
+	rb_raise(rb_eTypeError, "String object or Array object are expected");
+    Check_SafeStr(command);
+
+    establishShell(RSTRING(command)->ptr,&info);
 
     rfptr->mode = rb_io_mode_flags("r");
     rfptr->f = fdopen(info.fd, "r");
-    rfptr->path = strdup(RSTRING(shell)->ptr);
+    rfptr->path = strdup(RSTRING(command)->ptr);
 
     wfptr->mode = rb_io_mode_flags("w");
     wfptr->f = fdopen(dup(info.fd), "w");
-    wfptr->path = strdup(RSTRING(shell)->ptr);
+    wfptr->path = strdup(RSTRING(command)->ptr);
 
     res = rb_ary_new2(2);
     rb_ary_store(res,0,(VALUE)rport);
@@ -458,8 +466,7 @@
     rb_ary_store(res,2,INT2FIX(info.child_pid));
 
     if (rb_block_given_p()) {
-	rb_yield((VALUE)res);
-	reset_signal_action();
+	rb_ensure(rb_yield, (VALUE)res, (VALUE (*)())reset_signal_action, Qnil);
 	return Qnil;
     }
     else {

あと前述の件とは別に, PTY.spawnの引数が文字列以外の場合に
やはりsegvしてしまうのとCheck_SafeStrする必要があるのではないかな
と思ったのでその処理も加えてあります. 

-- 
 やまだ あきら <URL:http://arika.org/>
 (akira@arika.org, akira@ruby-lang.org or akira@linux.or.jp)

In This Thread

Prev Next