ruby-changes:16433
From: yugui <ko1@a...>
Date: Thu, 24 Jun 2010 11:00:10 +0900 (JST)
Subject: [ruby-changes:16433] Ruby:r28418 (ruby_1_9_2): merges r28315 from trunk into ruby_1_9_2.
yugui 2010-06-24 10:59:38 +0900 (Thu, 24 Jun 2010) New Revision: 28418 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=28418 Log: merges r28315 from trunk into ruby_1_9_2. -- * ext/fiddle/closure.c (dealloc): refix workaround r28300. don't use ffi_closure_alloc, ffi_prep_closure_loc and ffi_closure_free on MACOSX and __linux__. [ruby-dev:41483] [ruby-dev:41214] Modified files: branches/ruby_1_9_2/ChangeLog branches/ruby_1_9_2/ext/fiddle/closure.c Index: ruby_1_9_2/ChangeLog =================================================================== --- ruby_1_9_2/ChangeLog (revision 28417) +++ ruby_1_9_2/ChangeLog (revision 28418) @@ -1,3 +1,10 @@ +Mon Jun 14 04:03:55 2010 NARUSE, Yui <naruse@r...> + + * ext/fiddle/closure.c (dealloc): refix workaround r28300. + don't use ffi_closure_alloc, ffi_prep_closure_loc and + ffi_closure_free on MACOSX and __linux__. + [ruby-dev:41483] [ruby-dev:41214] + Sun Jun 13 15:46:07 2010 Yusuke Endoh <mame@t...> * test/ruby/test_rubyoptions.rb: add a simple test for __END__ and Index: ruby_1_9_2/ext/fiddle/closure.c =================================================================== --- ruby_1_9_2/ext/fiddle/closure.c (revision 28417) +++ ruby_1_9_2/ext/fiddle/closure.c (revision 28418) @@ -10,19 +10,19 @@ ffi_type **argv; } fiddle_closure; +#if defined(MACOSX) || defined(__linux) +#define DONT_USE_FFI_CLOSURE_ALLOC +#endif + static void dealloc(void * ptr) { fiddle_closure * cls = (fiddle_closure *)ptr; - /* -#ifndef MACOSX +#ifndef DONT_USE_FFI_CLOSURE_ALLOC ffi_closure_free(cls->pcl); #else - */ munmap(cls->pcl, sizeof(cls->pcl)); - /* #endif - */ xfree(cls->cif); if (cls->argv) xfree(cls->argv); xfree(cls); @@ -142,7 +142,7 @@ VALUE i = TypedData_Make_Struct(klass, fiddle_closure, &closure_data_type, closure); -#ifndef MACOSX +#ifndef DONT_USE_FFI_CLOSURE_ALLOC closure->pcl = ffi_closure_alloc(sizeof(ffi_closure), &closure->code); #else closure->pcl = mmap(NULL, sizeof(ffi_closure), PROT_READ | PROT_WRITE, @@ -195,7 +195,7 @@ if (FFI_OK != result) rb_raise(rb_eRuntimeError, "error prepping CIF %d", result); -#ifndef MACOSX +#ifndef DONT_USE_FFI_CLOSURE_ALLOC result = ffi_prep_closure_loc(pcl, cif, callback, (void *)self, cl->code); #else -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/