[#7300] resolver を呼ばない UDPsocket#recvfrom — Toshihiko SHIMOKAWA / 下川俊彦 <toshi@...>

あんまり ruby-dev な話でも無いのですが、ちょっとした機能拡張の提案なので、

12 messages 1999/07/12
[#7321] Re: resolver を呼ばない UDPsocket#recvfrom — Toshihiko SHIMOKAWA / 下川俊彦 <toshi@...> 1999/07/15

From: Toshihiko SHIMOKAWA / 下川俊彦 <toshi@csce.kyushu-u.ac.jp>

[#7313] Ruby 1.3.5 — Yukihiro Matsumoto <matz@...>

Ruby 1.3.5 is out, check out:

59 messages 1999/07/15
[#7318] Re: Ruby 1.3.5 — WATANABE Hirofumi <watanabe@...> 1999/07/15

わたなべです.

[#7326] Re: Ruby 1.3.5 — Wakou Aoyama <wakou@...> 1999/07/15

青山です。

[#7331] Re: Ruby 1.3.5 — matz@... (Yukihiro Matsumoto) 1999/07/16

まつもと ゆきひろです

[#7340] Re: Ruby 1.3.5 — Wakou Aoyama <wakou@...> 1999/07/16

青山です。

[#7368] Re: Ruby 1.3.5 — matz@... (Yukihiro Matsumoto) 1999/07/19

まつもと ゆきひろです

[#7373] Re: Ruby 1.3.5 — Shin-ichiro Hara <sinara@...> 1999/07/19

原です。

[#7374] Re: Ruby 1.3.5 — matz@... (Yukihiro Matsumoto) 1999/07/19

まつもと ゆきひろです

[#7382] Re: Ruby 1.3.5 — Wakou Aoyama <wakou@...> 1999/07/19

青山です。

[#7386] Re: Ruby 1.3.5 — matz@... (Yukihiro Matsumoto) 1999/07/21

まつもと ゆきひろです

[#7388] Re: Ruby 1.3.5 — Wakou Aoyama <wakou@...> 1999/07/21

青山です。

[#7387] [PATCH]extconf.rb, tcltklib.c, and rubytest.rb for NetBSD — Ryo HAYASAKA <hayasaka@...21.u-aizu.ac.jp>

早坂@会津大学です。

10 messages 1999/07/21

[#7466] [PATCH] for djgpp — WATANABE Hirofumi <watanabe@...>

わたなべです.

21 messages 1999/07/29
[#7467] Re: [PATCH] for djgpp — Katsuyuki Komatsu <komatsu@...> 1999/07/29

小松です。

[ruby-dev:7320] empty string in load path (Re: Ruby 1.3.5)

From: Masaki Fukushima <fukusima@...>
Date: 1999-07-15 12:10:44 UTC
List: ruby-dev #7320
福嶋です。

configure に --with-search-path というのが追加されましたね。
ところで、この --with-search-path を指定しなかった場合、
RUBY_SEARCH_PATHに空文字列が設定されてしまいます。

そして以下のようなファイルが存在する状態で、

  ./foo.so
  /usr/local/lib/ruby/1.3/i586-linux/foo.so

require 'foo' とやると、LoadError が発生します。
理由は以下のようなことだと思います。

 1. まず stat("" + "foo.so") で、カレントディレクトリの foo.so が
    見つかる。

 2. 次に dlopen("foo.so",...) が呼ばれるが、カレントディレクトリ
    は検索されないので、これがエラーになる。

このエラーは理由が分かりづらいので、いっそのこと $: の中の空文字
列はファイルの検索時には全て無視するようにした方が良いんじゃない
でしょうか?

パッチです。

Index: configure.in
===================================================================
RCS file: /home/cvs/ruby/configure.in,v
retrieving revision 1.1.1.2.2.24
diff -u -r1.1.1.2.2.24 configure.in
--- configure.in	1999/07/15 07:59:37	1.1.1.2.2.24
+++ configure.in	1999/07/15 11:52:05
@@ -781,7 +781,9 @@
 AC_ARG_WITH(search-path,
 		[--with-search-path	  specify the additional search path],
 		[search_path=$withval])
-AC_DEFINE_UNQUOTED(RUBY_SEARCH_PATH,"$search_path")
+if test "$search_path" != ""; then
+    AC_DEFINE_UNQUOTED(RUBY_SEARCH_PATH,"$search_path")
+fi
 
 echo "creating config.h"
 cat confdefs.h > config.h
Index: eval.c
===================================================================
RCS file: /home/cvs/ruby/eval.c,v
retrieving revision 1.1.1.3.2.27
diff -u -r1.1.1.3.2.27 eval.c
--- eval.c	1999/07/15 07:59:38	1.1.1.3.2.27
+++ eval.c	1999/07/15 11:52:05
@@ -4490,10 +4490,15 @@
 	int i;
 
 	Check_Type(rb_load_path, T_ARRAY);
+	vpath = rb_ary_new();
 	for (i=0;i<RARRAY(rb_load_path)->len;i++) {
-	    Check_SafeStr(RARRAY(rb_load_path)->ptr[i]);
+	    VALUE str = RARRAY(rb_load_path)->ptr[i];
+	    Check_SafeStr(str);
+	    if (RSTRING(str)->len > 0) {
+		rb_ary_push(vpath, str);
+	    }
 	}
-	vpath = rb_ary_join(rb_load_path, rb_str_new2(RUBY_PATH_SEP));
+	vpath = rb_ary_join(vpath, rb_str_new2(RUBY_PATH_SEP));
 	path = STR2CSTR(vpath);
 	if (safe_level >= 2 && !rb_path_check(path)) {
 	    rb_raise(rb_eSecurityError, "loading from unsefe path %s", path);


---
福嶋正機

In This Thread