| Age | Commit message (Collapse) | Author |
|
|
|
|
|
This test invokes GC.start 100 times, which takes approx. six minutes in
Solaris. This change runs the test in a separated process, which makes
GC.start faster.
|
|
|
|
Closes: https://github.com/ruby/ruby/pull/2251
|
|
|
|
Fixes [Bug #15951]
Closes: https://github.com/ruby/ruby/pull/2250
|
|
* gc.c (wmap_aset): bypass check for frozen and allow frozen
object in WeakMap. [Bug #13498]
|
|
|
|
Fixes [Bug #15949]
|
|
[Feature #15777]
Closes: https://github.com/ruby/ruby/pull/2173
|
|
|
|
Implement Complex#<=> so that it is usable as an argument when
calling <=> on objects of other classes (since #coerce will coerce
such numbers to Complex). If the complex number has a zero imaginary
part, and the other argument is a real number (or complex number with
zero imaginary part), return -1, 0, or 1. Otherwise, return nil,
indicating the objects are not comparable.
Fixes [Bug #15857]
|
|
[Feature #15160]
|
|
* string.c (rb_str_init): allocate new buffer if the string is
shared. [Bug #15937]
|
|
* string.c (rb_str_init): preserve the embedded content when
self-copying with a capacity. [Bug #15937]
|
|
Registering a string that depend on a dependent string as fstring
can lead to use-after-free. See c06ddfe and 3f95620 for details.
The following script triggers use-after-free on trunk, 2.4.6, 2.5.5
and 2.6.3. Credits to @wanabe for using eval as a cross-version way
of registering a fstring.
```ruby
a = ('j' * 24).b.b
eval('', binding, a)
p a
4.times { GC.start }
p a
```
- string.c (str_replace_shared_without_enc): when given a
dependent string, depend on the root of the dependent
string.
[Bug #15934]
|
|
* parse.y (value_expr_check): `then` or `else` only `if` is not a
void value expression, as the counterpart is evaluated as `nil`.
[Bug #15932]
|
|
* parse.y (value_expr_check): if either of `then` or `else`
statements is not a void value expression, the whole `if` is not
also a void value expression. [Bug #15932]
|
|
This reverts commit 44caca11cfa6bea01a1ef738846183f1a56d5658.
The change caused a build failure.
http://ci.rvm.jp/results/trunk-vm-asserts@silicon-docker/2102153
|
|
compile.c (NODE_CDECL): Evaluate the module before the value
test/ruby/test_const.rb (test_evaluation_order): added a test case
|
|
|
|
|
|
|
|
|
|
https://twitter.com/yukihiro_matz/status/1139454774640726019
|
|
|
|
To allow arguments without parentheses.
|
|
|
|
* io.c (rb_io_set_encoding_by_bom): IO#set_encoding_by_bom to set
the encoding by BOM if exists. [Bug #15210]
|
|
Fixes [Bug #15720]
|
|
* test/lib/test/unit/assertions.rb (assert_cpu_usage_low): apply
the timeout scale to measuring period. this assertion is very
runtime environment dependent.
|
|
|
|
https://hackerone.com/reports/605262
|
|
|
|
|
|
[Bug #15906]
|
|
|
|
|
|
FrozenError#receiver was added recently for getting the related
object programmatically. However, there are cases where FrozenError
is raised and not handled, and in those cases the resulting error
messages lack detail, which makes debugging the error more difficult,
especially in cases where the error is not easily reproducible.
This includes the inspect value of the frozen object in FrozenError
messages, which should make debugging simpler.
|
|
* parse.y (tok_hex): flush token after dispatching the "invalid
hex escape" parse error.
|
|
Fixes [Bug #15889]
|
|
Skip the webrick httpauth tests that use crypt when testing on
OpenBSD.
Fixes [Bug #11363]
|
|
|
|
|
|
|
|
* variable.c (set_namespace_path): modules/classes can get named
by assignment to constant, even if frozen. [Bug #15891]
|
|
`vm->orig_progname` can be different from `vm->progname` when user
code assigns to `$0`. While `vm->progname` is kept alive by the
global table, nothing marked `vm->orig_progname`.
[Bug #15887]
|
|
* parse.y: continue parsing the rest of the here-document starting
line, after the terminator was not found.
|
|
* parse.y (warn_space_char_code): warn whitespace characters
escaped with meta/control prefix.
|