[#14922] alias $gvar — Koji Arai <JCA02266@...>

新井です。

19 messages 2001/10/14

[#15006] Re: eval.c (rb_stack_check): prohibit recursive raising error — WATANABE Hirofumi <eban@...>

わたなべです。

13 messages 2001/10/26
[#15008] Re: eval.c (rb_stack_check): prohibit recursive raising error — Shugo Maeda <shugo@...> 2001/10/26

前田です。

[ruby-dev:15000] Re: TCPSocket.gethostbyname で Segmentation fault

From: tomohiko machida <machida@...>
Date: 2001-10-25 08:22:39 UTC
List: ruby-dev #15000
町田です。
素早い反応ありがとうございます。

From: matz@ruby-lang.org (Yukihiro Matsumoto)
Subject: [ruby-dev:14999] Re: TCPSocket.gethostbyname で Segmentation fault
Date: Thu, 25 Oct 2001 16:44:06 +0900

> ですが、この修正をどのように適用したものだか戸惑っています。
> もしよければ、diff -uの形式で差分をいただけませんでしょうか?

すいません。
不慣れなもので、*てきとう*な修正だったのでpatch形式にするほ
どでもないかなと思ってしまいました。

--- socket.c.orig	Thu Oct  4 14:30:32 2001
+++ socket.c	Thu Oct 25 16:54:48 2001
@@ -998,7 +998,14 @@
     }
     rb_ary_push(ary, INT2NUM(h->h_addrtype));
 #ifdef h_addr
-    for (pch = h->h_addr_list; *pch; pch++) {
+    {
+    int addr_list_size;
+    for (pch = h->h_addr_list; *pch; pch++);
+    pch++;
+    addr_list_size = (int)pch - (int)h->h_addr_list;
+    pch = (char **)alloca(addr_list_size);
+    memcpy((char *)pch, (char *)h->h_addr_list, addr_list_size);
+    for (; *pch; pch++) {
 	switch (addr.ss_family) {
 	case AF_INET:
 	  {
@@ -1033,6 +1040,7 @@
 	default:
 	    h = NULL;
 	}
+    }
     }
 #else
     memcpy((char *)&addr.sin_addr, h->h_addr, h->h_length);

こんな感じでしょうか?

他にも同様の問題ってあるのかな。

-------------------------------
Tomohiko Machida
machida@mica.semicon.sony.co.jp

In This Thread