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

ruby-changes:7746

From: akr <ko1@a...>
Date: Tue, 9 Sep 2008 20:37:47 +0900 (JST)
Subject: [ruby-changes:7746] Ruby:r19267 (trunk): * transcode.c (rb_econv_t): last_trans_index removed.

akr	2008-09-09 20:37:23 +0900 (Tue, 09 Sep 2008)

  New Revision: 19267

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=19267

  Log:
    * transcode.c (rb_econv_t): last_trans_index removed.
      (rb_econv_open_by_transcoder_entries): follow the type change.
      (rb_econv_open0): ditto.
      (rb_econv_decorate_at): ditto.
      (rb_econv_binmode): ditto.
      (rb_econv_insert_output): simplified because there are no decorators
      at last.

  Modified files:
    trunk/ChangeLog
    trunk/transcode.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 19266)
+++ ChangeLog	(revision 19267)
@@ -1,3 +1,13 @@
+Tue Sep  9 20:34:26 2008  Tanaka Akira  <akr@f...>
+
+	* transcode.c (rb_econv_t): last_trans_index removed.
+	  (rb_econv_open_by_transcoder_entries): follow the type change.
+	  (rb_econv_open0): ditto.
+	  (rb_econv_decorate_at): ditto.
+	  (rb_econv_binmode): ditto.
+	  (rb_econv_insert_output): simplified because there are no decorators
+	  at last.
+
 Tue Sep  9 20:21:54 2008  Tanaka Akira  <akr@f...>
 
 	* transcode.c (rb_econv_open): reverse the order of decorders.
Index: transcode.c
===================================================================
--- transcode.c	(revision 19266)
+++ transcode.c	(revision 19267)
@@ -109,7 +109,6 @@
     rb_econv_elem_t *elems;
     int num_trans;
     int num_finished;
-    int last_trans_index; /* last trans, not including universal newline */
     struct rb_transcoding *last_tc;
 
     /* last error */
@@ -829,7 +828,6 @@
     ec->elems = ALLOC_N(rb_econv_elem_t, ec->num_trans);
     ec->num_finished = 0;
     ec->last_tc = NULL;
-    ec->last_trans_index = -1;
     ec->last_error.result = econv_source_buffer_empty;
     ec->last_error.error_tc = NULL;
     ec->last_error.source_encoding = NULL;
@@ -850,7 +848,6 @@
     }
     if (ec->num_trans)
         ec->last_tc = ec->elems[ec->num_trans-1].tc;
-    ec->last_trans_index = ec->num_trans-1;
 
     for (i = 0; i < ec->num_trans; i++) {
         int bufsize = 4096;
@@ -934,11 +931,9 @@
 
     if (num_trans == 0) {
         ec->last_tc = NULL;
-        ec->last_trans_index = -1;
     }
     else {
-        ec->last_trans_index = ec->num_trans-1;
-        ec->last_tc = ec->elems[ec->last_trans_index].tc;
+        ec->last_tc = ec->elems[ec->num_trans-1].tc;
     }
 
     return ec;
@@ -1507,6 +1502,7 @@
     const unsigned char *insert_str = NULL;
     size_t insert_len;
 
+    int last_trans_index;
     rb_transcoding *tc;
 
     unsigned char **buf_start_p;
@@ -1532,25 +1528,27 @@
 
     need = insert_len;
 
-    tc = ec->last_tc;
-    if (!tc) {
+    last_trans_index = ec->num_trans-1;
+    if (ec->num_trans == 0) {
+        tc = NULL;
         buf_start_p = &ec->in_buf_start;
         data_start_p = &ec->in_data_start;
         data_end_p = &ec->in_data_end;
         buf_end_p = &ec->in_buf_end;
     }
-    else if (tc->transcoder->asciicompat_type == asciicompat_encoder) {
+    else if (ec->elems[last_trans_index].tc->transcoder->asciicompat_type == asciicompat_encoder) {
+        tc = ec->elems[last_trans_index].tc;
         need += tc->readagain_len;
         if (need < insert_len)
             goto fail;
-        if (ec->last_trans_index == 0) {
+        if (last_trans_index == 0) {
             buf_start_p = &ec->in_buf_start;
             data_start_p = &ec->in_data_start;
             data_end_p = &ec->in_data_end;
             buf_end_p = &ec->in_buf_end;
         }
         else {
-            rb_econv_elem_t *ee = &ec->elems[ec->last_trans_index-1];
+            rb_econv_elem_t *ee = &ec->elems[last_trans_index-1];
             buf_start_p = &ee->out_buf_start;
             data_start_p = &ee->out_data_start;
             data_end_p = &ee->out_data_end;
@@ -1558,11 +1556,12 @@
         }
     }
     else {
-        rb_econv_elem_t *ee = &ec->elems[ec->last_trans_index];
+        rb_econv_elem_t *ee = &ec->elems[last_trans_index];
         buf_start_p = &ee->out_buf_start;
         data_start_p = &ee->out_data_start;
         data_end_p = &ee->out_data_end;
         buf_end_p = &ee->out_buf_end;
+        tc = ec->elems[last_trans_index].tc;
     }
 
     if (*buf_start_p == NULL) {
@@ -1782,8 +1781,6 @@
     REALLOC_N(ec->elems, rb_econv_elem_t, ec->num_trans+1);
     MEMMOVE(ec->elems+n+1, ec->elems+n, rb_econv_elem_t, ec->num_trans-n);
     ec->num_trans++;
-    if (n <= ec->last_trans_index)
-        ec->last_trans_index++;
 
     ec->elems[n].tc = tc;
 
@@ -1865,8 +1862,6 @@
             if (trs[k] == ec->elems[i].tc->transcoder)
                 break;
         if (k == n) {
-            if (ec->last_tc == ec->elems[i].tc)
-                ec->last_trans_index = j;
             ec->elems[j] = ec->elems[i];
             j++;
         }

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

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