Issue #12202 has been updated by Shyouhei Urabe.


This is (surprisingly) safe, because that `mimeout_state.count = 0;` line purposefully terminates outer loop.  It works as expected; just in a ultimately complicated way. 

----------------------------------------
Bug #12202: nkf.c  static void mime_putc the variable being used for loop used for outer loop too
https://bugs.ruby-lang.org/issues/12202#change-57608

* Author: Anton Sivakov
* Status: Open
* Priority: Normal
* Assignee: 
* ruby -v: 
* Backport: 2.1: UNKNOWN, 2.2: UNKNOWN, 2.3: UNKNOWN
----------------------------------------
~~~
for (i=0;i<mimeout_state.count;i++) {
  if (SP<mimeout_state.buf[i] && mimeout_state.buf[i]<DEL) {
    eof_mime();
    for (i=0;i<mimeout_state.count;i++) {
      (*o_mputc)(mimeout_state.buf[i]);
      base64_count++;
    }
    mimeout_state.count = 0;
  }
}
~~~

Variable 'i' here used for outer and inner loop.
Also variable mimeout_state.count can be changed within a loop it can affect outer loop



-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>