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

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

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