diff options
| author | dearblue <[email protected]> | 2021-03-27 17:11:16 +0900 |
|---|---|---|
| committer | dearblue <[email protected]> | 2021-03-27 17:35:02 +0900 |
| commit | 6c097c7113d178fb6559e7690d2ab1513279a82f (patch) | |
| tree | 1c5999fef817c6220e308440d0c2bc83c15009b6 /test | |
| parent | 9492e389b801c2a4f8e605fab3b1c5d4a0dc31f3 (diff) | |
| download | mruby-6c097c7113d178fb6559e7690d2ab1513279a82f.tar.gz mruby-6c097c7113d178fb6559e7690d2ab1513279a82f.zip | |
Fix `SIGSEGV` with mruby-method + mruby-catch
Previously, the following code would cause a `SIGSEGV`.
```ruby
mm = method(:throw)
define_method(:throw, ->(*args) { mm.call(*args) })
catch { |tag| throw tag }
```
I think the reason is in the `mrb_yield_with_class()` function:
- Even if a C function is called, `CI_ACC_SKIP` is used
- `cipop()` is not done if globally jumping from a C function
Diffstat (limited to 'test')
0 files changed, 0 insertions, 0 deletions
