arton
arton****@yahoo*****
2007年 3月 18日 (日) 22:33:37 JST
artonです。 いじっているうちに壊したみたいで、今度は、rbを重複ロードしてました。 以下と差し替えます。 diff -u exerb.cpp ..\exerb\src\exerb\exerb.cpp --- exerb.cpp Mon Feb 26 19:32:13 2007 +++ ..\exerb\src\exerb\exerb.cpp Sun Mar 18 22:31:17 2007 @@ -51,6 +51,7 @@ extern "C" VALUE rb_load_path; extern "C" VALUE rb_argv0; extern "C" VALUE rb_progname; +extern "C" int rb_feature_p _((const char *, const char *, int)); //////////////////////////////////////////////////////////////////////////////// @@ -274,6 +275,8 @@ return Qtrue; #endif case FILE_ENTRY_HEADER_TYPE_EXTENSION_LIBRARY: + const char* ext = strrchr(RSTRING_PTR(feature), '.'); + if (::rb_feature_p(RSTRING_PTR(feature), ext, Qfalse)) return Qfalse; ::rb_provide(RSTRING_PTR(feature)); ::exerb_load_extension_library(file_entry); return Qtrue; @@ -281,13 +284,14 @@ } else if ( ::exerb_find_file_outside(fname, &feature, &realname) ) { if ( ::rb_provided(RSTRING_PTR(feature)) ) return Qfalse; - const char *ext = ::strrchr(RSTRING_PTR(feature), '.'); + const char* ext = strrchr(RSTRING_PTR(feature), '.'); if ( ::stricmp(ext, ".rb") == 0 ) { ::rb_provide(RSTRING_PTR(feature)); ::exerb_load_ruby_script(RSTRING_PTR(realname)); return Qtrue; } else if ( ::stricmp(ext, ".so") == 0 ) { + if (::rb_feature_p(RSTRING_PTR(feature), ext, Qfalse)) return Qfalse; ::rb_provide(RSTRING_PTR(feature)); ::exerb_load_extension_library(RSTRING_PTR(realname)); return Qtrue; -- arton <arton****@yahoo*****> -------------------------------------- Start Yahoo! Auction now! Check out the cool campaign http://pr.mail.yahoo.co.jp/auction/