* sprintf.c (rb_str_format): refactor floating point format of
Rational by using gereric Integer functions.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54306 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* sprintf.c (rb_str_format): fix buffer overflow, length must be
greater than precision. reported by William Bowling <will AT
wbowling.info>.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54304 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* sprintf.c (rb_str_format): convert Rational to floating point
format by using gereric Integer functions, not by methods which
can be overwritten.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54302 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* numeric.c (rb_int2str): conversion function to String for
generic Integer.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54298 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* ext/openssl/extconf.rb: check SSL_CTX_set_next_proto_select_cb
function rather than OPENSSL_NPN_NEGOTIATED macro. it exists
even if it is disabled by OpenSSL configuration.
[ruby-core:74384] [Bug #12182]
* ext/openssl/ossl_ssl.c: update #ifdef(s) as above.
* test/openssl/test_ssl.rb: skip NPN tests if NPN is disabled.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54258 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* lib/mkmf.rb (find_executable0): On Windows, it is actually valid
to surround individual PATH directory entries with double
quotes. Remove these before joining the path as otherwise the
literal quotes would become part of the path, resulting in the
executable not to be found. [Fix GH-1305]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54255 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* strftime.c (STRFTIME): deal with case conversion flags for
recursive formats.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54245 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* ext/date/date_core.c (dt_lite_iso8601): strftimev() always
returns a String, so append them directly.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54243 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* ext/date/date_core.c (d_lite_jisx0301, iso8601_timediv),
(dt_lite_jisx0301): format by the format string in local buffer
to prevent intermediate strings from GC.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54242 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* strftime.c (rb_strftime_with_timespec): remove unnecessary
check, as `s` equals to `endp` when recursed STRFTIME resized
the capacity same as the size.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54239 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* strftime.c (rb_strftime_with_timespec): append formatted results
to the given string with expanding, and also deal with NUL chars.
* strftime.c (rb_strftime, rb_strftime_timespec): return formatted
string, not the length put in the given buffer.
* time.c (rb_strftime_alloc): no longer needs to retry with
reallocating buffers.
* time.c (time_strftime): no longer needs to split by NUL chars.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54236 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
expand_name. (display_name rescues NotFoundError by itself,
the original logic looks buggy...)
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54235 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* marshal.c (r_long): cast to `signed char`, which is used
already, instead of SIGN_EXTEND_CHAR.
* parse.y: SIGN_EXTEND_CHAR is no longer used. [Fix GH-1302]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54234 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* cygwin/GNUmakefile.in (MSYS2_ARG_CONV_EXCL_PARAM):
* add missing parentheses and remove double quotes.
* rename to get rid of recursive references.
* as --excludes-dir option is for a path name, its argument
should be converted.
[ruby-dev:49526] [Bug #12199]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54233 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* enc/unicode/case-folding.rb, casefold.h: Using above flag in data.
* enc/unicode.c: Marking capitalized character as unmodified if it is
already titlecase.
* test/ruby/enc/test_case_mapping.rb: Tests for above functionality.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54229 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
are valid pointers.
maybe checking them in wdivmod0() is better manner, but I guess that
passing real dummy pointers may be faster than checking and branching
in wdivmod0().
this commit fixes SEGV on 32bit and LLP64 platforms.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54225 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* test/lib/test/unit.rb (Test::Unit::StatusLine#failed): print
failed messages only if replacing mode, otherwise defer them
until the end, to get rid of interleaving failures with progress
messages. refix r54195.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54223 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* time.c (wmul): use MUL_OVERFLOW_FIXWV_P and only switch.
* time.c (wmul): use mul which has Fixnum optimization.
* time.c (rb_time_magnify): If WIDEVALUE_IS_WIDER, wmul() has the same
optimized logic, else mul() has also the similar logic for Fixnum.
* time.c (rb_time_unmagnify): almost ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54221 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* time.c (wquo): use quo which has Fixnum optimization.
* time.c (wdivmod0): added for WIDEVALUE_IS_WIDER.
* time.c (wdivmod): use wdivmod0 and divmodv.
divmodv has Fixnum optimization.
* time.c (wdiv): use wdivmod0 and div to avoid the use of divmodv which
calls id_quo whose return value is array.
* time.c (wmod): use wdivmod0 and mod to avoid the use of divmodv which
calls id_quo whose return value is array.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54218 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
x == FIXNUM_MIN && y == -1. This must be a rare case and it is
expected compiler to handle well.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54216 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* time.c (quo): c can be Fixnum except a == FIXNUM_MIN && b == -1.
Such case can be optimized out because quo()'s argument is constant.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54213 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* common.mk (TEST_EXCLUDES, EXCLUDE_TESTFRAMEWORK): use full spell
long option.
* cygwin/GNUmakefile.in (MSYS2_ARG_CONV_EXCL): suppress path name
conversions by msys2. [ruby-dev:49525] [Bug #12199]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54211 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* string.c (enc_succ_alnum_char): try to skip an invalid character
gap between GREEK CAPITAL RHO and SIGMA.
[ruby-core:74478] [Bug #12204]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54210 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* node.c (rb_gc_mark_node): NODE_MATCH2 can have nd_args, u3,
since r54100.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54209 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
but LONG_LONG is always defined as 64bit), or there's int128_t.
* internal.h (DL2NUM): defined if DLONG is defined.
* internal.h (rb_fix_mul_fix): defined for `Fixnum * Fixnum`.
* insns.def (opt_mul): use rb_fix_mul_fix().
* numeric.c (fix_mul): ditto.
* time.c (mul): ditto.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54203 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* numeric.c (fix_gt, fix_ge, fix_lt, fix_le): optimize comparisons
Fixnum against Bignum by rb_big_cmp in inversed order without
new Bignum instance.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54201 b2dd03c8-39d4-4d8f-98ff-823fe69b080e