summaryrefslogtreecommitdiff
path: root/ChangeLog
AgeCommit message (Collapse)Author
2017-09-14merge revision(s) 59897:usa
lib/webrick/log.rb: sanitize any type of logs It had failed to sanitize some type of exception messages. Reported and patched by Yusuke Endoh (mame) at https://hackerone.com/reports/223363 git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@59900 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-09-14merge revision(s) 59375: [Backport #13756]usa
parse.y: empty hash in defined * parse.y (command): NODE_ARRAY with NULL is invalid. traversal in defined_expr0 is simplified than iseq_compile_each0. [ruby-core:82113] [Bug #13756] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@59884 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-09-14merge revision(s) 59763: [Backport #13874]usa
string.c: fix false coderange * string.c (rb_enc_str_scrub): enc can differ from the actual encoding of the string, the cached coderange is useless then. [ruby-core:82674] [Bug #13874] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@59883 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-09-14* ChangeLog: forgotten entries for r59880 and r59881.usa
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@59882 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-09-14* ext/bigdecimal/bigdecimal.c (BigDecimal_hash): st_index_t may not beusa
fixable on 64bit mswin/mingw. * ext/date/date_core.c (d_lite_hash): ditto. [Backport #13877] * ext/openssl/ossl_bn.c (ossl_bn_hash): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@59879 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-09-09asn1: fix out-of-bounds read in decoding constructed objectsusa
* OpenSSL::ASN1.{decode,decode_all,traverse}: have a bug of out-of-bounds read. int_ossl_asn1_decode0_cons() does not give the correct available length to ossl_asn1_decode() when decoding the inner components of a constructed object. This can cause out-of-bounds read if a crafted input given. Reference: https://hackerone.com/reports/170316 https://github.com/ruby/openssl/commit/1648afef33c1d97fb203c82291b8a61269e85d3b git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@59800 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-09-09* ext/json: bump to version 1.8.3.1. [Backport #13853]usa
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@59799 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-09-09* ChangeLog: forgotten to commitusa
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@59798 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-09-09* lib/rubygems: fix several vulnerabilities in RubyGems; bump to versionusa
2.5.2.1. [Backport #13842] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@59795 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-08-09merge revision(s) 59202: [Backport #13690]usa
compile.c: disallow next in once * compile.c (iseq_compile_each0): turned dregx context in "once" into "guarded" type from "block" type, to disallow `next`, `break`, `redo` as well as outside "once". [ruby-core:81805] [Bug #13690] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@59553 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-08-09* test/ruby/test_process.rb (test_rlimit_{name,value}): test in UTF-8usa
encoding. fix test failures introduced at r59531 on some platforms. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@59552 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-08-09merge revision(s) 57634: [Backport #13150]usa
marshal.c: revert r57631 partially * marshal.c (rb_marshal_dump_limited): do not free dump_arg, which may be dereferenced in check_dump_arg due to continuation, and get rid of dangling pointers. * marshal.c (rb_marshal_load_with_proc): ditto for load_arg. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@59551 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-08-09* compile.c (iseq_compile_each): remove unused definition of unusedusa
variable derived from original patch. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@59550 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-08-09merge revision(s) 58205: [Backport #13380]usa
Remove unused Init_frozen_strings declaration Init_frozen_strings definition is removed in r51511. https://bugs.ruby-lang.org/issues/11423 Patch by Kohei Suzuki <eagletmt@gmail.com> * internal.h: Remove declaration of unexist function [Fix GH-1558] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@59548 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-08-09merge revision(s) 58262,58263: [Backport #13369]usa
fix TracePoint#return_value with non-local exits * vm.c: get return_value from imemo_throw_data object (THROW_DATA_VAL()). imemo_throw_data (TAG_BREAK) contains returned value. However, imemo_throw_data (TAG_BREAK) can skip several frames so that we need to use it only once (at most internal frame). To record it, we introduced THROW_DATA_CONSUMED and check it. * internal.h: define THROW_DATA_CONSUMED flag. * test/ruby/test_settracefunc.rb: add tests for [Bug #13369] * vm_insnhelper.h: add THROW_DATA_CONSUMED_P() and THROW_DATA_CONSUMED_SET(). internal.h: parenthesize macro argument * internal.h (THROW_DATA_P): parenthesize the argument which is casted. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@59547 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-08-09merge revision(s) 59368: [Backport #13753]usa
random.c: ensure initialized * random.c (get_rnd, try_get_rnd): ensure initialized to get rid of crash in forked processes. [ruby-core:82100] [Bug #13753] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@59546 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-08-09merge revision(s) 59384: [Backport #13759]usa
strscan.c: fix segfault in aref * ext/strscan/strscan.c (strscan_aref): fix segfault after get_byte or getch which do not apply regexp. [ruby-core:82116] [Bug #13759] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@59545 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-08-09merge revision(s) 58287: [Backport #13411]usa
configure.in: rpath with OPTDIR * configure.in: add rpath flags which is needed for OPTDIR as well as -L options, when it is given. [ruby-dev:50065] [Bug #13411] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@59544 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-08-09merge revision(s) 59181: [Backport #13680]usa
vm_insnhelper.c: break in once * vm_insnhelper.c (vm_throw_start): size of catch table has been included in iseq_catch_table struct, which could be NULL, since 2.2. e.g., proc-closure in `once'. [ruby-core:81775] [Bug #13680] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@59543 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-08-09* ChangeLog: for the previous commitusa
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@59542 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-08-09* compile.c (iseq_compile_each): the lifetime of new_opt have to beusa
until this case block is end. this is a part of r57971. [Backport #13766] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@59540 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-08-09[Backport #13150]usa
this patch contains r54158, r57410, r57631 and r57954. Prevent GC by volatile [Bug #13150] test/ruby/test_marshal.rb test_context_switch (load) and test_gc (dump) are failed on FreeBSD 10.3 and gcc7 (FreeBSD Ports Collection) 7.0.0 20170115 (experimental); RB_GC_GUARD looks not worked well. * include/ruby/ruby.h (RB_GC_GUARD): prevent guarded pointer from optimization by using as an input to inline asm. * ruby.h: remove comment * include/ruby/ruby.h (RB_GC_GUARD): remove comment unsupported by Solaris AS. Hidden objects (klass == 0) are not visible to Ruby code invoked from other threads or signal handlers, so they can never be accessed from other contexts. This makes it safe to call rb_gc_force_recycle on the object slot after releasing malloc memory. * marshal.c (rb_marshal_dump_limited): hide dump_arg and recycle when done (rb_marshal_load_with_proc): hide load_arg and recycle when done [ruby-core:79518] * marshal.c (rb_marshal_dump_limited): do not free dump_arg, which may be dereferenced in check_dump_arg due to continuation, and get rid of dangling pointers. * marshal.c (rb_marshal_load_with_proc): ditto for load_arg. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@59539 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-08-09merge revision(s) 57415,57474: [Backport #13239]usa
eval.c: copy special exception * eval.c (setup_exception): make unfrozen copy of special exception before setting up a cause. test_io.rb: separate a test * test/ruby/test_io.rb (test_closed_stream_in_rescue): run in a separated process. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@59538 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-08-09merge revision(s) 59307: [Backport #13284]usa
a64: fix crash on register stack mark/sweep pass * thread_pthread.c: move 'register_stack_start' earlier. [ruby-core:79928] [Bug #13284] [Fix GH-1625] Author: Sergei Trofimovich <slyfox@gentoo.org> git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@59537 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-08-09* ChangeLog: forgotten to commitusa
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@59534 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-08-09merge revision(s) 56576,56623: [Backport #12678] [Backport #13429]usa
* lib/net/smtp.rb (tlsconnect): support timeout for TLS handshake. [ruby-core:76893] [Bug #12678] * lib/net/protocol.rb (ssl_socket_connect): new method to implement timeout for TLS handshake. * lib/net/http.rb (connect): use Net::Protocol#ssl_socket_connect. * test/net/smtp/test_smtp.rb (test_tls_connect, test_tls_connect): use Socket.tcp_server_sockets in case localhost is resolved to ::1. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@59533 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-07-07This backport of r58812 is necessary to ease backporting r59028,usa
which fixes a real bug. * thread.c (struct waiting_fd): declare (rb_thread_io_blocking_region): use on-stack list waiter (rb_notify_fd_close): walk vm->waiting_fds instead (call_without_gvl): remove old field setting (th_init): ditto [Feature #9632] * vm_core.h (typedef struct rb_vm_struct): add waiting_fds list * (typedef struct rb_thread_struct): remove waiting_fd field (rb_vm_living_threads_init): initialize waiting_fds list This should fix bad interactions with test_race_gets_and_close in test/ruby/test_io.rb since we ensure rb_notify_fd_close continues returning the busy flag after enqueuing the interrupt. * thread.c (rb_notify_fd_close): do not enqueue multiple interrupts [ruby-core:81581] [Bug #13632] * test/ruby/test_io.rb (test_single_exception_on_close): new test based on script from Nikolay git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@59274 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-07-05* ext/openssl/ossl_cipher.c: remove the encryption key initializationusa
from Cipher#initialize. This is effectively a revert of r32723 ("Avoid possible SEGV from AES encryption/decryption", 2011-07-28). the patch is derived from https://github.com/ruby/openssl/commit/8108e0a6db133f3375608303fdd2083eb5115062, written by Kazuki Yamaguchi. [Backport #8221] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@59267 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-06-30* ext/psych/yaml: update libyaml to 0.1.7.usa
* ext/psych/psych.gemspec: bump version to 2.1.0.1. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@59242 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-06-30merge revision(s) 59161: [Backport #13672]usa
parse.y: check multibyte char * parse.y (parser_precise_mbclen): check invalid multibyte char at skipping strings following `?x` literal string, not to stuck in a infinite loop. [ruby-core:81746] [Bug #13672] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@59241 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-06-30merge revision(s) 59102: [Backport #13515]usa
pathname.rb: UNC root pathname needs a separator * ext/pathname/lib/pathname.rb (Pathname#plus): UNC root pathname needs a separator. File.basename returns "/" on UNC root, as well as sole drive letter, even if it does not end with a separator. [ruby-core:80900] [Bug #13515] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@59240 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-06-30merge revision(s) 59033,59034: [Backport #13636]usa
rexml: add close tag check on end of document to StreamParser [ruby-core:81593] [Bug #13636] Reported by Anton Sivakov. Thanks!!! * properties. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@59239 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-06-30merge revision(s) 58693: [Backport #13558]usa
array.c: check position to insert * array.c (rb_ary_insert): check position to insert even if no elements to be inserted. [ruby-core:81125] [Bug #13558] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@59238 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-06-30merge revision(s) 58643: [Backport #13231]usa
date_core.c: fix docs for %Z format * ext/date/date_core.c: [DOC] fix documentation for %Z format of {Date,DateTime}.strftime. Reported by Damon Timm. Based on a patch by nano. [ruby-core:79602] [Bug #13231] [Fix GH-1565] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@59237 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-06-30merge revision(s) 58552: [Backport #13531]usa
rss: Accept empty text element as valid element Parser has been accepted it but XML serializer wasn't accepted. Reported by stefano frabetti. Thanks!!! [ruby-core:80965] [Bug #13531] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@59236 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-06-30* ext/openssl/ossl_x509store.c: clear error queue after callingusa
X509_LOOKUP_load_file() X509_LOOKUP_load_file(), which ends up calling X509_load_cert_crl_file() internally, may leave error entries in the queue even when it returns non-zero value (which indicates success). This will be fixed by OpenSSL 1.1.1, but can be worked around by clearing the error queue ourselves. Fixes: [Backport #11033] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@59235 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-06-30merge revision(s) 56558,59116,59136: [Backport #12670]usa
* gc.c (heap_page_resurrect): do not return tomb_pages when page->freelist == NULL. [Bug #12670] test for [Bug #12670] heap corruption by deferred free. gc.c: expand sorted pages * gc.c (heap_page_allocate): expand sorted pages before inserting allocated new page. [Bug #12670] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@59234 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-06-30merge revision(s) 58210: [Backport #8916]usa
vsnprintf.c: prefix with precision * vsnprintf.c (BSD_vfprintf): sign and hex-prefix should not be counted in precision. [ruby-dev:47714] [Bug #8916] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@59233 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-06-30merge revision(s) 58334,58346,58349: [Backport #13425] [Backport #13432]usa
thread.c: disable VM events when stack overflow * thread.c (ruby_thread_stack_overflow): disable VM events when stack overflow occurred; it causes another stack overflow again in making backtrace object, and crashes. [ruby-core:80662] [Bug #13425] increase timeout seconds. * test/ruby/test_trace.rb (test_trace_stackoverflow): on some platforms this test fails because of timeout. disable rewind hooks. * vm.c (hook_before_rewind): skip rewind hooks if err is SystemStackError because rewind hooks can cause stack overflow again and again. * thread.c (ruby_thread_stack_overflow): do not disable all hooks. Additionally, clearing ruby_vm_event_flags is not suitable way to disable hooks. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@59232 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-06-30merge revision(s) 59080,59082: [Backport #13656]usa
proc.c: skip prepended modules * proc.c (method_super_method): skip prepended modules and continue from the super class of the original class. [ruby-core:81666] [Bug #13656] test/ruby/test_method.rb: refined [ruby-core:81666] [Bug #13656] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@59231 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-06-30merge revision(s) 55324,55325: [Backport #13651]usa
* lib/net/smtp.rb (getok, get_response): raise an ArgumentError when CR or LF is included in a line, because they are not allowed in RFC5321. RFC5321. Thanks, Jeremy Daer. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@59230 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-06-30merge revision(s) 59030,59031: [Backport #13638]usa
thread.c: avoid busy looping on rb_thread_fd_close We no longer use it this function, but extensions do, and we need to ensure it continues to work for them. * thread.c (rb_thread_fd_close): schedule other threads in loop * ext/-test-/thread_fd_close/thread_fd_close.c: new file * ext/-test-/thread_fd_close/depend: ditto * ext/-test-/thread_fd_close/extconf.rb: ditto * test/-ext-/thread_fd_close/test_thread_fd_close.rb: new test * properties. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@59229 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-06-30merge revision(s) 57530: [Backport #13191]usa
sample/pty/shl.rb: update sample * Specify frozen_string_literal: true. * Fix TypeError of raise. * Use a character literal instead of Integer. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@59228 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-06-30merge revision(s) 59002: [Backport #13621]usa
string.c: docs for String#split * string.c: [DOC] clarify docs for String#split when called with limit and capture groups. Reported by Cichol Tsai. [ruby-core:81505] [Bug #13621] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@59227 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-06-30merge revision(s) 58825,58826: [Backport #5339]usa
erb.rb: Allow explicit trimming carriage return when trim_mode is "-", for Windows environments. [ruby-core:39625] [Bug #5339] erb.rb: Allow trimming CR in all trim_modes to unify a behavior with r58823 and r58825. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@59226 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-06-30merge revision(s) 58823: [Backport #11464]usa
erb.rb: Allow trimming carriage return when trim_mode is "<>", for Windows environments. [Bug #11464] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@59225 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-06-30merge revision(s) 58796: [Backport #13545]usa
Merge latest dtoa.c [Bug #13545] Apply some part of http://www.netlib.org/fp/dtoa.c with my eyes... git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@59224 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-06-30merge revision(s) 57248: [Backport #13573]usa
dir.c: getattrlist on OSX 10.5 * dir.c (is_case_sensitive): use getattrlist() if fgetattrlist() is unavailable, on OSX 10.5. [ruby-core:68829] [Bug #11054] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@59223 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-06-30merge revision(s) 53400: [Backport #13572]usa
* tool/mkconfig.rb (RbConfig): prefix SDKROOT to oldincludedir not includedir, the latter is outside the ruby installation. [ruby-core:72496] [Bug #11881] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@59222 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-06-30merge revision(s) 58696: [Backport #11384]usa
autoload: always wait on loading thread We cannot assume autoload_provided/rb_feature_provided returning TRUE means it is safe to proceed without waiting. Another thread may call rb_provide_feature before setting the constant (via autoload_const_set). So we must wait until autoload is completed by another thread. Note: this patch was tested with an explicit rb_thread_schedule in rb_provide_feature to make the race condition more apparent as suggested by <s.wanabe@gmail.com>: > --- a/load.c > +++ b/load.c > @@ -563,6 +563,7 @@ rb_provide_feature(VALUE feature) > rb_str_freeze(feature); > > rb_ary_push(features, rb_fstring(feature)); > +rb_thread_schedule(); > features_index_add(feature, INT2FIX(RARRAY_LEN(features)-1)); > reset_loaded_features_snapshot(); > } * variable.c (check_autoload_required): do not assume a provided feature means autoload is complete, always wait if autoload is being performed by another thread. [ruby-core:81105] [Bug #11384] Thanks to <s.wanabe@gmail.com> git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@59221 b2dd03c8-39d4-4d8f-98ff-823fe69b080e