ruby-changes:17627
From: nobu <ko1@a...>
Date: Sat, 30 Oct 2010 09:08:56 +0900 (JST)
Subject: [ruby-changes:17627] Ruby:r29635 (trunk): * ext/fiddle/closure.c (fiddle_closure): embed cif not reference
nobu 2010-10-30 09:08:30 +0900 (Sat, 30 Oct 2010) New Revision: 29635 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=29635 Log: * ext/fiddle/closure.c (fiddle_closure): embed cif not reference so that the content surely get initialized. [ruby-dev:42480] Modified files: trunk/ChangeLog trunk/ext/fiddle/closure.c Index: ChangeLog =================================================================== --- ChangeLog (revision 29634) +++ ChangeLog (revision 29635) @@ -1,3 +1,8 @@ +Sat Oct 30 09:08:27 2010 Nobuyoshi Nakada <nobu@r...> + + * ext/fiddle/closure.c (fiddle_closure): embed cif not reference + so that the content surely get initialized. [ruby-dev:42480] + Sat Oct 30 07:01:53 2010 Tanaka Akira <akr@f...> * lib/resolv-replace.rb: suppress warning. Index: ext/fiddle/closure.c =================================================================== --- ext/fiddle/closure.c (revision 29634) +++ ext/fiddle/closure.c (revision 29635) @@ -5,7 +5,7 @@ typedef struct { void * code; ffi_closure *pcl; - ffi_cif * cif; + ffi_cif cif; int argc; ffi_type **argv; } fiddle_closure; @@ -23,7 +23,6 @@ #else munmap(cls->pcl, sizeof(cls->pcl)); #endif - xfree(cls->cif); if (cls->argv) xfree(cls->argv); xfree(cls); } @@ -37,7 +36,7 @@ if (ptr) { size += sizeof(*cls); #if !defined(FFI_NO_RAW_API) || !FFI_NO_RAW_API - size += ffi_raw_size(cls->cif); + size += ffi_raw_size(&cls->cif); #endif size += sizeof(*cls->argv); size += sizeof(ffi_closure); @@ -148,7 +147,6 @@ closure->pcl = mmap(NULL, sizeof(ffi_closure), PROT_READ | PROT_WRITE, MAP_ANON | MAP_PRIVATE, -1, 0); #endif - closure->cif = xmalloc(sizeof(ffi_cif)); return i; } @@ -185,7 +183,7 @@ rb_iv_set(self, "@ctype", ret); rb_iv_set(self, "@args", args); - cif = cl->cif; + cif = &cl->cif; pcl = cl->pcl; result = ffi_prep_cif(cif, NUM2INT(abi), argc, -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/