Yukihiro "Matz" Matsumoto
3cf291f722
vm.c: create break object before clearing GC arena.
...
Otherwise it possibly cause use-after-free.
2022-04-04 12:26:52 +09:00
Yukihiro "Matz" Matsumoto
8aec568fc5
range.c: detect integer overflow.
2022-04-03 18:39:40 +09:00
Yukihiro "Matz" Matsumoto
b99c389ec3
internal.h: aggregate internal functions.
...
Internal functions can only be called from within the library.
Functions listed in `mruby/internal.h` can be called from:
* core (src/*.c)
* gems (mrbgems/**/*.c)
But not from the application linked with `libmruby`.
2022-04-02 18:25:13 +09:00
Yukihiro "Matz" Matsumoto
00acae117d
vm.c: target class may be NULL.
2022-04-01 16:40:06 +09:00
Yukihiro "Matz" Matsumoto
d1f1b4ea38
cdump.c: add const qualifier for line number arrays.
2022-04-01 15:02:39 +09:00
Yukihiro "Matz" Matsumoto
7f5a490d09
vm.c: vm.c: stack may be reallocated in functions calls; aaa28a5
...
`mrb_range_new()` also calls VM recursively.
2022-03-26 21:06:02 +09:00
Yukihiro "Matz" Matsumoto
aaa28a5089
vm.c: stack may be reallocated in functions calls.
...
Probably due to recursive VM calls via `mrb_funcall()`.
2022-03-25 12:54:45 +09:00
Yukihiro "Matz" Matsumoto
d53a991b07
Merge pull request #5668 from dearblue/gcred
...
No need to protect red objects
2022-03-24 10:33:40 +09:00
Yukihiro "Matz" Matsumoto
74597c6159
numeric.c: fix compile errors with MRB_NO_FLOAT; fix #5672
2022-03-20 19:04:00 +09:00
Yukihiro "Matz" Matsumoto
4f869f3367
numeric.c: enhance float division to support Complex.
2022-03-18 14:23:17 +09:00
Yukihiro "Matz" Matsumoto
fe03e01078
numeric.c: enhance integer division to support Rational and Complex.
...
No longer need to override division methods in mrbgems.
2022-03-18 12:27:46 +09:00
Yukihiro "Matz" Matsumoto
4dcdf78f8a
numeric_ext.c: add Integer#pow() method.
...
Which takes optional second argument of modulo.
2022-03-17 23:25:50 +09:00
Yukihiro "Matz" Matsumoto
6b2f08d933
Merge pull request #5670 from dearblue/exc-message
...
Reimplement `Exception#message` in Ruby
2022-03-16 22:17:55 +09:00
Yukihiro "Matz" Matsumoto
4e1cf3293b
string.h: replace obsolete functions with macros.
...
- mrb_string_value_ptr()
- mrb_string_value_len()
2022-03-15 19:08:25 +09:00
Yukihiro "Matz" Matsumoto
6aa5d53867
numeric.c: avoid mrb_float with MRB_NO_FLOAT; fix #5671
...
`MRB_USE_COMPLEX` is exclusive with `MRB_NO_FLOAT`, so we only need to
check the former.
2022-03-15 19:07:28 +09:00
Yukihiro "Matz" Matsumoto
37d6506972
string.c: remove unused API mrb_str_strlen().
...
Compatibility macro is provided for safety.
2022-03-14 14:11:25 +09:00
Yukihiro "Matz" Matsumoto
c5f2ac896c
array.c: refactoring allocation size error.
2022-03-13 19:58:57 +09:00
dearblue
75371b8831
Reimplement Exception#message in Ruby
...
Suppresses the possibility of `mrb_vm_exec()` being called recursively.
2022-03-13 18:56:23 +09:00
dearblue
98d90d83cc
Change function name mrb_bob_init to mrb_do_nothing
...
This is because it is not limited to the `BasicObject#initialize` method.
2022-03-13 16:45:20 +09:00
dearblue
c3eac4fe5c
No need to protect red objects
...
The object in `GC_RED` does not need to be marked, and the objects connected to this object should also not need to be marked.
2022-03-13 16:28:43 +09:00
Yukihiro "Matz" Matsumoto
062c2128a3
numops.c: avoid mrb_funcall; call functions directly.
2022-03-12 13:31:38 +09:00
Yukihiro "Matz" Matsumoto
7659b3b271
numeric.c: avoid mrb_funcall; call functions directly.
...
When you try to call functions defined in mrbgems, you need to add the
names of functions to `mrbc.c`, since `mrbc` does not link any mrbgem
regardless of the configuration.
2022-03-12 13:31:38 +09:00
Yukihiro "Matz" Matsumoto
b0d6413f2d
numops.c: rename functions for addition and subtraction.
...
To more consistent names.
* mrb_num_plus() -> mrb_num_add()
* mrb_num_minus() -> mrb_num_sub()
Since no one seems to use those functions, there should be no problem.
We added migration macros for compatibility for safety.
2022-03-12 10:54:11 +09:00
Yukihiro "Matz" Matsumoto
a20064bcb7
numops.c: separate API functions not used from mruby.
...
* mrb_num_plus()
* mrb_num_minus()
* mrb_num_mul()
2022-03-12 10:53:59 +09:00
Yukihiro "Matz" Matsumoto
5636e6ab54
numeric.c: rename and expose integer arithmetic functions.
...
* mrb_int_add()
* mrb_int_sub()
* mrb_int_mul()
2022-03-12 08:44:04 +09:00
Yukihiro "Matz" Matsumoto
55476efb62
error.c: use mrb_funcall_id and presym to call _sys_fail method.
2022-03-11 10:25:32 +09:00
Yukihiro "Matz" Matsumoto
b3416832f4
vm.c: refactor block type checking.
2022-03-10 10:43:51 +09:00
Yukihiro "Matz" Matsumoto
0293037b21
proc.c: refactor proc type checking.
2022-03-10 10:43:22 +09:00
Yukihiro "Matz" Matsumoto
6ca1e5c8e0
kernel.c: use preallocated symbol.
2022-03-09 17:14:57 +09:00
Yukihiro "Matz" Matsumoto
6e964bd1c6
array.c: check size bound by ARY_MAX_SIZE not MRB_INT_MAX.
2022-03-09 15:21:15 +09:00
Yukihiro "Matz" Matsumoto
19b9184aa3
string.c: remove unnecessary goto.
2022-03-09 15:21:13 +09:00
Yukihiro "Matz" Matsumoto
2f8eba325a
Merge pull request #5664 from dearblue/extend
...
Reimplement `Kernel.extend` in Ruby
2022-03-07 11:21:59 +09:00
Yukihiro "Matz" Matsumoto
dc98988482
string.c: small refactoring regarding check_null_byte.
2022-03-06 23:49:40 +09:00
dearblue
ac0d27d1a9
Reimplement Kernel.extend in Ruby
2022-03-06 13:48:04 +09:00
Yukihiro "Matz" Matsumoto
7528c25aae
string.c: remove unnecessary mrb_assert_int_fit().
2022-03-05 08:04:33 +09:00
Yukihiro "Matz" Matsumoto
31d4bbcfea
string.c: improve size/capacity check before allocations.
2022-03-04 14:17:21 +09:00
Yukihiro "Matz" Matsumoto
876bcba694
string.c: avoid integer type mixture in mrb_str_cat().
2022-03-03 16:29:54 +09:00
Yukihiro "Matz" Matsumoto
ef3a56c92b
error.c: (mrb_exc_new) use mrb_int instead of size_t.
2022-03-03 14:48:39 +09:00
Yukihiro "Matz" Matsumoto
c3f0f84da5
string.c: remove code duplication using str_init_modifiable().
2022-03-03 14:48:29 +09:00
Yukihiro "Matz" Matsumoto
1a9991f165
string.c: remove unnecessary size check before string initialization.
2022-03-03 08:08:02 +09:00
Yukihiro "Matz" Matsumoto
a9bde42641
string.c: small refactoring (open else clause after return).
2022-03-03 08:08:02 +09:00
Yukihiro "Matz" Matsumoto
a4f740ff9a
string.c: use mrb_int instead of size_t.
2022-03-03 08:08:02 +09:00
Yukihiro "Matz" Matsumoto
51a3317c5b
string.c: check integer overflow using mrb_int_mul_overflow().
2022-03-03 08:08:01 +09:00
Yukihiro "Matz" Matsumoto
1508da4740
array.c: check integer overflow in mrb_ary_set().
2022-03-01 15:04:08 +09:00
Yukihiro "Matz" Matsumoto
9d8f3c60ff
kernel.c: inline mrb_obj_extend() that is called only from one place.
2022-02-28 19:07:31 +09:00
Yukihiro "Matz" Matsumoto
57540fbf6c
object.c: improve handling of the broken inspect method.
...
When `inspect` method returns non-string value, it will return a string
given from `to_s` (and if `to_s` fails, will raise an exception).
2022-02-26 22:01:52 +09:00
Yukihiro "Matz" Matsumoto
5305c5c84d
array.c: call mrb_ary_delete_at() directly from Array#slice!.
...
Avoid `mrb_funcall()`.
2022-02-26 14:21:35 +09:00
Yukihiro "Matz" Matsumoto
349307ba88
codedump.c: do not print nameless registers.
2022-02-21 11:46:34 +09:00
Yukihiro "Matz" Matsumoto
47068ae07a
vm.c: packed arguments length may be zero for send method.
2022-02-18 14:38:07 +09:00
Yukihiro "Matz" Matsumoto
1e0bdea30b
codedump.c: print implicit operand of OP_HASHCAT.
...
Just like `OP_ARYCAT` and `OP_STRCAT`.
2022-02-16 07:40:42 +09:00