ruby-changes:7805
From: akr <ko1@a...>
Date: Sat, 13 Sep 2008 18:52:20 +0900 (JST)
Subject: [ruby-changes:7805] Ruby:r19326 (trunk): * transcode.c (rb_transcoding): align state field.
akr 2008-09-13 18:52:02 +0900 (Sat, 13 Sep 2008) New Revision: 19326 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=19326 Log: * transcode.c (rb_transcoding): align state field. Modified files: trunk/ChangeLog trunk/transcode.c Index: ChangeLog =================================================================== --- ChangeLog (revision 19325) +++ ChangeLog (revision 19326) @@ -1,3 +1,7 @@ +Sat Sep 13 18:46:41 2008 Tanaka Akira <akr@f...> + + * transcode.c (rb_transcoding): align state field. + Sat Sep 13 18:21:09 2008 Tanaka Akira <akr@f...> * transcode.c (DECORATOR_P): renamed from SUPPLEMENTAL_CONVERSION. Index: transcode.c =================================================================== --- transcode.c (revision 19325) +++ transcode.c (revision 19326) @@ -67,7 +67,10 @@ unsigned char *ptr; /* length: max_output */ } writebuf; - void *state; /* opaque data for stateful encoding */ + union rb_transcoding_state_t { /* opaque data for stateful encoding */ + void *ptr; + double dummy_for_alignment; + } state; } rb_transcoding; #define TRANSCODING_READBUF(tc) \ ((tc)->transcoder->max_input <= sizeof((tc)->readbuf.ary) ? \ @@ -77,11 +80,11 @@ ((tc)->transcoder->max_output <= sizeof((tc)->writebuf.ary) ? \ (tc)->writebuf.ary : \ (tc)->writebuf.ptr) -#define TRANSCODING_STATE_EMBED_MAX sizeof(void *) +#define TRANSCODING_STATE_EMBED_MAX sizeof(union rb_transcoding_state_t) #define TRANSCODING_STATE(tc) \ ((tc)->transcoder->state_size <= sizeof((tc)->state) ? \ (void *)&(tc)->state : \ - (tc)->state) + (tc)->state.ptr) typedef struct { struct rb_transcoding *tc; @@ -728,7 +731,7 @@ tc->transcoder = tr; tc->flags = flags; if (TRANSCODING_STATE_EMBED_MAX < tr->state_size) - tc->state = xmalloc(tr->state_size); + tc->state.ptr = xmalloc(tr->state_size); if (tr->state_init_func) { (tr->state_init_func)(TRANSCODING_STATE(tc)); /* xxx: check return value */ } @@ -766,7 +769,7 @@ (tr->state_fini_func)(TRANSCODING_STATE(tc)); /* check return value? */ } if (TRANSCODING_STATE_EMBED_MAX < tr->state_size) - xfree(tc->state); + xfree(tc->state.ptr); if (sizeof(tc->readbuf.ary) < tr->max_input) xfree(tc->readbuf.ptr); if (sizeof(tc->writebuf.ary) < tr->max_output) -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/