[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]