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

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/

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