[#9445] thread.rb — m_seki@...

18 messages 2000/03/16
[#9446] Re: thread.rb — matz@... (Yukihiro Matsumoto) 2000/03/17

[#9460] Re: thread.rb — m_seki@... 2000/03/21

[#9462] Re: thread.rb — matz@... (Yukihiro Matsumoto) 2000/03/21

まつもと ゆきひろです

[#11281] Re: thread.rb — Masatoshi SEKI <m_seki@...> 2000/10/22

[#9498] timeout しない timeout — ARIMA Yasuhiro <fit0298@...>

有馬です。

20 messages 2000/03/26
[#9506] Re: timeout しない timeout — matz@... (Yukihiro Matsumoto) 2000/03/27

まつもと ゆきひろです

[#9509] Re: timeout しない timeout — gotoken@... (GOTO Kentaro) 2000/03/27

In message "[ruby-dev:9506] Re: timeout しない timeout"

[ruby-dev:9371] Re: [PATCH] Win32API

From: WATANABE Hirofumi <eban@...>
Date: 2000-03-05 11:53:22 UTC
List: ruby-dev #9371
わたなべです.

WATANABE Hirofumi <eban@os.rim.or.jp> writes:

:Win32API の object が宙に浮いてました. すみません.
:GC.start すると FreeLibrary されて SEGV.

GetModuleHandle を使ってると何度も LoadLibrary されると GC
の対象になるので, GetModuleHandle を使うものはやめました.

先の PATCH は捨ててください.

-- 
わたなべひろふみ

Sun Mar  5 20:35:45 2000  WATANABE Hirofumi  <eban@os.rim.or.jp>

	* ext/Win32API/Win32API.c (Win32API_initialize): should call
	  LoadLibrary() everytime and should assign the hdll to Win32API
	  object(protect the hdll from GC).


--- ext/Win32API/Win32API.c.orig	Sat Mar 04 20:06:10 2000
+++ ext/Win32API/Win32API.c	Sun Mar 05 20:00:04 2000
@@ -54,9 +54,6 @@
 
-    hdll = GetModuleHandle(RSTRING(dllname)->ptr);
-    if (!hdll) {
-	hdll = LoadLibrary(RSTRING(dllname)->ptr);
-	if (!hdll)
-	    rb_raise(rb_eRuntimeError, "LoadLibrary: %s\n", RSTRING(dllname)->ptr);
-	Data_Wrap_Struct(self, 0, Win32API_FreeLibrary, hdll);
-    }
+    hdll = LoadLibrary(RSTRING(dllname)->ptr);
+    if (!hdll)
+	rb_raise(rb_eRuntimeError, "LoadLibrary: %s\n", RSTRING(dllname)->ptr);
+    rb_iv_set(self, "__hdll__", Data_Wrap_Struct(self, 0, Win32API_FreeLibrary, hdll));
     hproc = GetProcAddress(hdll, RSTRING(proc)->ptr);

In This Thread