ruby-changes:11105
From: nobu <ko1@a...>
Date: Mon, 2 Mar 2009 11:01:59 +0900 (JST)
Subject: [ruby-changes:11105] Ruby:r22703 (trunk): * ext/dl/dl.h (dlerror): fixed on Windows.
nobu 2009-03-02 11:01:48 +0900 (Mon, 02 Mar 2009) New Revision: 22703 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=22703 Log: * ext/dl/dl.h (dlerror): fixed on Windows. * ext/dl/handle.c (rb_dlhandle_initialize): returns handle to libruby if nil is given on Windows as dlopen. Modified files: trunk/ChangeLog trunk/ext/dl/dl.h trunk/ext/dl/handle.c trunk/ruby.c Index: ChangeLog =================================================================== --- ChangeLog (revision 22702) +++ ChangeLog (revision 22703) @@ -1,5 +1,10 @@ -Mon Mar 2 10:50:53 2009 Nobuyoshi Nakada <nobu@r...> +Mon Mar 2 11:01:45 2009 Nobuyoshi Nakada <nobu@r...> + * ext/dl/dl.h (dlerror): fixed on Windows. + + * ext/dl/handle.c (rb_dlhandle_initialize): returns handle to + libruby if nil is given on Windows as dlopen. + * ext/dl/handle.c (rb_dlhandle_sym): get rid of buffer overrun, and try ASCII WINAPI versions too. Index: ext/dl/dl.h =================================================================== --- ext/dl/dl.h (revision 22702) +++ ext/dl/dl.h (revision 22703) @@ -24,7 +24,7 @@ # include <windows.h> # define dlclose(ptr) FreeLibrary((HINSTANCE)ptr) # define dlopen(name,flag) ((void*)LoadLibrary(name)) -# define dlerror() "unknown error" +# define dlerror() strerror(rb_w32_map_errno(GetLastError())) # define dlsym(handle,name) ((void*)GetProcAddress(handle,name)) # define RTLD_LAZY -1 # define RTLD_NOW -1 Index: ext/dl/handle.c =================================================================== --- ext/dl/handle.c (revision 22702) +++ ext/dl/handle.c (revision 22703) @@ -67,6 +67,13 @@ rb_bug("rb_dlhandle_new"); } +#if defined(HAVE_WINDOWS_H) + if( !clib ){ + HANDLE rb_libruby_handle(void); + ptr = rb_libruby_handle(); + } + else +#endif ptr = dlopen(clib, cflag); #if defined(HAVE_DLERROR) if( !ptr && (err = dlerror()) ){ Index: ruby.c =================================================================== --- ruby.c (revision 22702) +++ ruby.c (revision 22703) @@ -325,6 +325,12 @@ libruby = dll; return TRUE; } + +HANDLE +rb_libruby_handle(void) +{ + return libruby; +} #endif void ruby_init_loadpath_safe(int safe_level); -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/