[#11852] continuations in Ruby 1.9? — David Flanagan <david@...>
In a comment on my recent blog post
On 8/6/07, David Flanagan <david@davidflanagan.com> wrote:
[#11860] Is this really what we want? — James Edward Gray II <james@...>
I'm investigating some recent breakage in FasterCSV and have tracking
Hi,
[#11871] ruby-openssl: == incorrect for X509-Subjects — Hadmut Danisch <hadmut@...>
Hi,
[#11876] priorities of newly-created threads — David Flanagan <david@...>
Hi,
Hi,
[#11886] Core dump with simple web scraper when run via cron — Daniel Berger <Daniel.Berger@...>
Hi all,
[#11890] Ruby and Solaris door library — "Hiro Asari" <asari.ruby@...>
Hi, there. This is my first patch against ruby. I think I followed
Hiro Asari wrote:
On 8/13/07, Daniel Berger <djberg96@gmail.com> wrote:
> -----Original Message-----
On 8/15/07, Berger, Daniel <Daniel.Berger@qwest.com> wrote:
[#11893] UDP sockets raise exception on MIPS platform — Brian Candler <B.Candler@...>
I am running ruby-1.8.6 under OpenWrt (*), which is a small MIPS platform
[#11894] IO#seek and whence problem — Bertram Scharpf <lists@...>
[#11899] pack/unpack 64bit Integers — Hadmut Danisch <hadmut@...>
Hi,
On Wed, Aug 15, 2007 at 06:50:01AM +0900, Hadmut Danisch wrote:
On Wed, Aug 15, 2007 at 02:45:20PM +0900, Brian Candler wrote:
On Fri, Aug 17, 2007 at 05:17:09PM +0200, Hadmut Danisch wrote:
Dumb question of the day: are Kernel#proc and Kernel#lambda identical?
> Dumb question of the day: are Kernel#proc and Kernel#lambda identical?
[#11900] missing bison, gperf not detected, do I need ruby to build ruby? — "Gabor Szabo" <szabgab@...>
Hi,
On Wed, 15 Aug 2007, Gabor Szabo wrote:
> > It seems ./configure did not detect the fact that bison was missing from
[#11930] Bug in select? — "Robert Dober" <robert.dober@...>
Hi
[#11945] Smoke testing Ruby — "Gabor Szabo" <szabgab@...>
Hi,
On 8/21/07, Gabor Szabo <szabgab@gmail.com> wrote:
Ruby used to have the Triple-R project based on Rubicon: see
Hugh Sasse wrote:
[#11947] Splatting MatchData bug? — Jos Backus <jos@...>
$ /tmp/ruby-1.9/bin/ruby -v
[#11948] Fibers in Ruby 1.9? — David Flanagan <david@...>
I just noticed that my ruby1.9 build of August 17th includes a Fiber
David Flanagan wrote:
On 8/22/07, Daniel Berger <djberg96@gmail.com> wrote:
On Wed, 22 Aug 2007 20:50:12 +0900, "Francis Cianfrocca" <garbagecat10@gmail.com> wrote:
On 8/22/07, MenTaLguY <mental@rydia.net> wrote:
On Thu, 23 Aug 2007 00:57:01 +0900, "Francis Cianfrocca" <garbagecat10@gmail.com> wrote:
[#11960] coroutines with Fiber::Core — David Flanagan <david@...>
The following code works on Linux with today's snapshot of 1.9:
Hi,
[#11981] Inverse Square Root — "Dave Pederson" <dave.pederson@...>
Hello-
[#11988] String#length not working properly in Ruby 1.9 — "Vincent Isambart" <vincent.isambart@...>
I saw that Matz just merged his M17N implementation in the trunk.
Hi,
On Sat, 25 Aug 2007 10:54:20 +0200, Yukihiro Matsumoto
Hi,
On 8/25/07, Yukihiro Matsumoto <matz@ruby-lang.org> wrote:
Hi,
On 8/25/07, Yukihiro Matsumoto <matz@ruby-lang.org> wrote:
[#12025] how to build ruby on vms — "toni" <toni@...>
Hi,
[#12040] Pragmas in Ruby 1.9 — David Flanagan <david@...>
Hi,
[#12042] Encodings of string literals; explicit codepoint escapes? — David Flanagan <david@...>
This message contains queries that probably only Matz can answer:
Hi,
Yukihiro Matsumoto wrote:
On 8/31/07, Yukihiro Matsumoto <matz@ruby-lang.org> wrote:
[PATCH] ext/Win32API - Manual FreeLibrary support
I think it will be great if Win32API allows manual free'ing of dynamically loaded libraries instead of waiting for GC to free it. Attached patch adds free/Free method in Win32API class for manual FreeLibrary() call. -abhisek
Attachments (1)
Index: ext/Win32API/Win32API.c
===================================================================
--- ext/Win32API/Win32API.c (revision 12888)
+++ ext/Win32API/Win32API.c (working copy)
@@ -27,7 +27,8 @@
Win32API_FreeLibrary(hdll)
HINSTANCE hdll;
{
- FreeLibrary(hdll);
+ if(hdll)
+ FreeLibrary(hdll);
}
static VALUE
@@ -154,6 +155,7 @@
} param;
#define params param.params
+ VALUE obj_dll = rb_iv_get(obj, "__dll__");
VALUE obj_proc = rb_iv_get(obj, "__proc__");
VALUE obj_import = rb_iv_get(obj, "__import__");
VALUE obj_export = rb_iv_get(obj, "__export__");
@@ -161,6 +163,8 @@
int items = rb_scan_args(argc, argv, "0*", &args);
int nimport = RARRAY(obj_import)->len;
+ if(NIL_P(obj_dll))
+ rb_raise(rb_eRuntimeError, "stale/freed object");
if (items != nimport)
rb_raise(rb_eRuntimeError, "wrong number of parameters: expected %d, got %d",
@@ -205,11 +209,34 @@
}
}
+static VALUE
+Win32API_Free(VALUE self)
+{
+ VALUE v;
+ HINSTANCE hdll;
+
+ v = rb_iv_get(self, "__hdll__");
+ if(NIL_P(v))
+ return Qfalse;
+
+ Data_Get_Struct(v, HINSTANCE, (HINSTANCE*)hdll);
+ if(!FreeLibrary(hdll))
+ rb_raise(rb_eRuntimeError, "failed to free library (error code: %d)", GetLastError());
+
+ DATA_PTR(v) = NULL;
+ rb_iv_set(self, "__hdll__", Qnil);
+ rb_iv_set(self, "__dll__", Qnil);
+
+ return Qtrue;
+}
+
void
Init_Win32API()
{
VALUE cWin32API = rb_define_class("Win32API", rb_cObject);
rb_define_method(cWin32API, "initialize", Win32API_initialize, 4);
rb_define_method(cWin32API, "call", Win32API_Call, -1);
+ rb_define_method(cWin32API, "free", Win32API_Free, 0);
rb_define_alias(cWin32API, "Call", "call");
+ rb_define_alias(cWin32API, "Free", "free");
}