| Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
|
|
Instead, look for instance methods of Kernel.
Otherwise, instance methods of Module (which are methods of Kernel
itself) are mistakenly believed to exist, and it fails when calling
Kernel.instance_method().
Closes: https://github.com/ruby/ruby/pull/1422
|
|
|
|
|
|
|
|
|
|
When the value is not Proc.
|
|
When unknown value comes.
|
|
|
|
- insert_text
- redisplay
- line_buffer
- point
- point=
- vi_editing_mode
- emacs_editing_mode
- vi_editing_mode?
- emacs_editing_mode?
- get_screen_size
|
|
|
|
|
|
|
|
Existing doc for Enumerable#include? and member? has some problems.
* `IO.constants` is not commonly used, and only some know
that `SEEK_SET` is actually included in constants.
* `IO.constants` is actually an Array, not the example is not
appropriate for `Enumerable` module.
So in this commit, the old example is replaced with new one.
New example uses integer range, which is much simpler and easier to
understand.
Closes: https://github.com/ruby/ruby/pull/2168
|
|
|
|
|
|
|
|
|
|
|
|
This reverts commit b1767e56b158d8307412a0928a7ac2366541429d.
|
|
|
|
|
|
|
|
|
|
|
|
Revert "Propagate parser_params to rb_yytnamerr"
This reverts commit 15f45ae4d12f14714ab3021b60887d8c7bf4b095.
|
|
This reverts commit 56528da3efb32bb773b22740c24450246b861e58.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
to fix
https://ci.appveyor.com/project/ruby/ruby/builds/24438615/job/yld1utsltxag9dr2
|
|
|
|
|
|
|
|
|
|
|
|
This is a follow up for 3f9562015e651735bfc2fdd14e8f6963b673e22a.
Before this commit, it was possible to create a shared string which
shares with another shared string by passing a frozen shared string
to `str_duplicate`.
Such string looks like:
```
-------- -----------------
| root | ------ owns -----> | root's buffer |
-------- -----------------
^ ^ ^
----------- | |
| shared1 | ------ references ----- |
----------- |
^ |
----------- |
| shared2 | ------ references ---------
-----------
```
This is bad news because `rb_fstring(shared2)` can make `shared1`
independent, which severs the reference from `shared1` to `root`:
```c
/* from fstr_update_callback() */
str = str_new_frozen(rb_cString, shared2); /* can return shared1 */
if (STR_SHARED_P(str)) { /* shared1 is also a shared string */
str_make_independent(str); /* no frozen check */
}
```
If `shared1` was the only reference to `root`, then `root` can be
reclaimed by the GC, leaving `shared2` in a corrupted state:
```
----------- --------------------
| shared1 | -------- owns --------> | shared1's buffer |
----------- --------------------
^
|
----------- -------------------------
| shared2 | ------ references ----> | root's buffer (freed) |
----------- -------------------------
```
Here is a reproduction script for the situation this commit fixes.
```ruby
a = ('a' * 24).strip.freeze.strip
-a
p a
4.times { GC.start }
p a
```
- string.c (str_duplicate): always share with the root string when
the original is a shared string.
- test_rb_str_dup.rb: specifically test `rb_str_dup` to make
sure it does not try to share with a shared string.
[Bug #15792]
Closes: https://github.com/ruby/ruby/pull/2159
|
|
|
|
|
|
|
|
|
|
Objects in the finalizer table stay pinned for now. In some cases, the
key could move which would cause a miss when removing the object from
the table (leading to a T_MOVED reference staying in the table).
|
|
|
|
|