ruby-changes:3176
From: ko1@a...
Date: 25 Dec 2007 15:21:48 +0900
Subject: [ruby-changes:3176] nobu - Ruby:r14669 (trunk): * transcode.c (transcode_dispatch): fix for multistep transcode.
nobu 2007-12-25 15:21:35 +0900 (Tue, 25 Dec 2007) New Revision: 14669 Modified files: trunk/ChangeLog trunk/transcode.c Log: * transcode.c (transcode_dispatch): fix for multistep transcode. http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=14669&r2=14668 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/transcode.c?r1=14669&r2=14668 Index: ChangeLog =================================================================== --- ChangeLog (revision 14668) +++ ChangeLog (revision 14669) @@ -1,3 +1,7 @@ +Tue Dec 25 15:21:33 2007 Nobuyoshi Nakada <nobu@r...> + + * transcode.c (transcode_dispatch): fix for multistep transcode. + Tue Dec 25 15:07:51 2007 NAKAMURA Usaku <usa@r...> * enc/trans/single_byte.c (Init_single_byte): renamed. Index: transcode.c =================================================================== --- transcode.c (revision 14668) +++ transcode.c (revision 14669) @@ -117,8 +117,8 @@ st_data_t k, val = 0; k = (st_data_t)key; - if (!st_lookup(transcoder_table, k, &val) && - st_delete(transcoder_lib_table, &k, &val)) { + while (!st_lookup(transcoder_table, k, &val) && + st_delete(transcoder_lib_table, &k, &val)) { const char *const lib = (const char *)val; int len = strlen(lib); char path[sizeof(transcoder_lib_prefix) + MAX_TRANSCODER_LIBNAME_LEN]; @@ -128,6 +128,8 @@ memcpy(path, transcoder_lib_prefix, sizeof(transcoder_lib_prefix) - 1); memcpy(path + sizeof(transcoder_lib_prefix) - 1, lib, len + 1); if (!rb_require(path)) return NULL; + } + if (!val) { if (!st_lookup(transcoder_table, (st_data_t)key, &val)) { /* multistep logic, via UTF-8 */ if (!encoding_equal(from_encoding, "UTF-8") && -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml