* transcode.c (transcode_dispatch): fix for multistep transcode.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14669 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2007-12-25 06:21:35 +00:00
Родитель ec579454bb
Коммит 3e65d11090
2 изменённых файлов: 8 добавлений и 2 удалений

Просмотреть файл

@ -1,3 +1,7 @@
Tue Dec 25 15:21:33 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
* transcode.c (transcode_dispatch): fix for multistep transcode.
Tue Dec 25 15:07:51 2007 NAKAMURA Usaku <usa@ruby-lang.org>
* enc/trans/single_byte.c (Init_single_byte): renamed.

Просмотреть файл

@ -117,8 +117,8 @@ transcode_dispatch(const char* from_encoding, const char* to_encoding)
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 @@ transcode_dispatch(const char* from_encoding, const char* to_encoding)
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") &&