Yukihiro "Matz" Matsumoto
8d1468eab4
Remove cname duplication from exc_inspect().
2017-03-19 08:05:19 +09:00
Yukihiro "Matz" Matsumoto
e6b5c75ec5
Avoid possible infinite recursion in mrb_print_error(); ref #3517
2017-03-19 07:20:44 +09:00
Yukihiro "Matz" Matsumoto
2cbbeba0e0
Check call depth when mrb_yield_class() is called; ref #3521
2017-03-19 00:28:52 +09:00
Yukihiro "Matz" Matsumoto
75c374cad3
Update stack only when callinfo is popped; fix #3521
2017-03-19 00:28:52 +09:00
Yukihiro "Matz" Matsumoto
6db38c3768
Need not to call mrb_obj_as_string() is sep is nil.
2017-03-19 00:28:52 +09:00
Yukihiro "Matz" Matsumoto
ce8697523f
Merge pull request #3526 from ksss/sprintf
...
sprintf: Should use mrb_int for any object
2017-03-18 23:30:35 +09:00
ksss
2005bf997f
Should use mrb_int for any object
...
o=Object.new
def o.to_int
1
end
p "%*d" % [o, 1]
2017-03-18 22:06:01 +09:00
Yukihiro "Matz" Matsumoto
fa502b498e
Need to setup singleton_class chain; fix #3509
2017-03-18 18:06:37 +09:00
Yukihiro "Matz" Matsumoto
38a3b89d39
Small cosmetic change ("* " -> "*").
2017-03-18 17:38:07 +09:00
Yukihiro "Matz" Matsumoto
6ea26aafd5
Save/restore GC arena index to avoid arena overflow error.
2017-03-18 17:37:24 +09:00
Yukihiro "Matz" Matsumoto
00427d45f5
Fixed access of uninitialized C local variable; fix #3525
2017-03-18 17:34:29 +09:00
Yukihiro "Matz" Matsumoto
b2916f1b5c
Avoid mrb_check_string_type() in raising exception; fix #3506
...
The change may reduce flexibility, but I believe no one wants
that level of flexibility here.
2017-03-18 02:34:56 +09:00
Yukihiro "Matz" Matsumoto
27fc76f6c6
Merge pull request #3524 from ksss/timestamp
...
MiniRake::Task#timestamp should use Time.now only
2017-03-17 16:00:50 +09:00
Yukihiro "Matz" Matsumoto
fca17b41c7
Avoid trampoline when #eval is called from mrb_funcall(); fix #3522
2017-03-17 15:55:18 +09:00
ksss
f99e100187
MiniRake::Task#timestamp should use Time.now only
2017-03-17 12:41:06 +09:00
Yukihiro "Matz" Matsumoto
9ecebebf3e
Merge pull request #3510 from ksss/string-each_line
...
Some update for `String#each_line`
2017-03-16 22:18:15 +09:00
Yukihiro "Matz" Matsumoto
47cc5d66e3
Singleton classes do not have outer class set; fix #3505
2017-03-16 22:13:58 +09:00
Yukihiro "Matz" Matsumoto
b64f08784c
Protect stack region before calling mrb_convert_type(); fix #3504
2017-03-16 21:40:22 +09:00
ksss
4ee79a8777
Support to return enumerator when no block given
2017-03-15 16:58:29 +09:00
ksss
673ce237c4
Suuport custom separator
2017-03-15 16:58:28 +09:00
ksss
6eb02a892d
Use duplicated object for block args
2017-03-15 16:58:28 +09:00
Yukihiro "Matz" Matsumoto
f8b31a0db6
instance_eval method does not introduce C function boundary; fix #3508
2017-03-15 09:00:03 +09:00
Yukihiro "Matz" Matsumoto
4b1e5d47b3
Merge pull request #3503 from nobu/bug/sprintf-oob
...
Fix out-of-bound access
2017-03-14 09:07:06 +09:00
Nobuyoshi Nakada
d8c4fe7bcb
Fix out-of-bound access
...
Get rid of out-of-bound access when single % at the end.
2017-03-13 23:56:33 +09:00
Yukihiro "Matz" Matsumoto
191ee2596c
Need to copy argv since it may be reallocated; fix #3500
...
The argv for `mrb_yield_with_class()` should not be on mruby stack.
Note the result from `mrb_get_args("*")` is on the stack.
2017-03-13 22:51:53 +09:00
Yukihiro "Matz" Matsumoto
877f43bca5
OP_BLKPUSH is invalid outside of methods; fix #3501
2017-03-13 22:03:31 +09:00
Yukihiro "Matz" Matsumoto
916b8ed5c8
Generate new OP_RESCUE; fix #3487
...
The old OP_RESCUE took one operand A, which specifies a class
to match with the exception. The new OP_RESCUE takes tree operands:
A: the register to hold exception
B: the matching exception; the match result will be stored here.
C: the continuation; if C is zero, the exception will be stored to R(A)
otherwise, the value from R(A) is used as a exception.
Thus,
```ruby
begin
raise "a"
rescue TypeError
p 1
rescue RuntimeError
p 2
end
```
will be compiled as
```
irep 0x557a06667aa0 nregs=4 nlocals=1 pools=1 syms=4 reps=0
file: /tmp/e.rb
2 000 OP_ONERR 005
2 001 OP_LOADSELF R1
2 002 OP_STRING R2 L(0) ; "a"
2 003 OP_SEND R1 :raise 1
2 004 OP_JMP 022
3 005 OP_GETCONST R2 :TypeError
3 006 OP_RESCUE R1 R2
3 007 OP_JMPIF R2 009
3 008 OP_JMP 013
4 009 OP_LOADSELF R1
4 010 OP_LOADI R2 1
4 011 OP_SEND R1 :p 1
4 012 OP_JMP 023
5 013 OP_GETCONST R2 :RuntimeError
5 014 OP_RESCUE R1 R2 cont
5 015 OP_JMPIF R2 017
5 016 OP_JMP 021
6 017 OP_LOADSELF R1
6 018 OP_LOADI R2 2
6 019 OP_SEND R1 :p 1
6 020 OP_JMP 023
6 021 OP_RAISE R1
6 022 OP_POPERR 1
6 023 OP_STOP
```
The new VM can accept old OP_RESCUE. The mruby compatible VM (namely
mruby/c) should be updated to support the new OP_RESCUE behavior.
2017-03-12 01:10:20 +09:00
Yukihiro "Matz" Matsumoto
92f5becabe
Update VM to support new OP_RESCUE behavior; ref #3487
2017-03-12 00:58:00 +09:00
Yukihiro "Matz" Matsumoto
26169f9e25
Enhance OP_RESCUE to take B operand fas matching exception; ref #3487
2017-03-12 00:50:38 +09:00
Yukihiro "Matz" Matsumoto
000c68da97
OP_RETRUN to take B as matching exception; ref #3487
2017-03-11 16:32:29 +09:00
Yukihiro "Matz" Matsumoto
4ab70294ea
Revert 642ab8e; ref #3422
...
Also fix #3499 . The issue was solved by #3462 .
2017-03-11 16:03:04 +09:00
Yukihiro "Matz" Matsumoto
94395e81c1
The width printf specifier may be negative; fix #3498
2017-03-11 15:22:54 +09:00
Yukihiro "Matz" Matsumoto
f30ec2dfb0
fixup! Check return value from snprintf(); ref #3498
2017-03-11 15:22:42 +09:00
Yukihiro "Matz" Matsumoto
e3922318bd
Check return value from snprintf(); ref #3498
2017-03-11 15:18:41 +09:00
Yukihiro "Matz" Matsumoto
f9ed15d899
Merge pull request #3496 from ksss/string-gsub
...
Avoid infinity loop when empty string pattern
2017-03-11 10:22:34 +09:00
Yukihiro "Matz" Matsumoto
7590482d48
Merge branch 'master' into string-gsub
2017-03-11 10:22:17 +09:00
Yukihiro "Matz" Matsumoto
431f474ba3
Merge pull request #3497 from ksss/subreplace
...
\1 sequences as empty strings
2017-03-11 10:19:59 +09:00
ksss
b56ad8d122
\1 sequences as empty strings
2017-03-10 22:22:06 +09:00
ksss
4b3e6cf169
Avoid infinity loop when empty string pattern
2017-03-10 13:26:15 +09:00
Yukihiro "Matz" Matsumoto
ff262f2133
Update ci->mid according to surrounding scope; fix #3490
2017-03-10 12:37:19 +09:00
Yukihiro "Matz" Matsumoto
2f299cf4dc
Simplify expression; ref #3490
2017-03-10 12:36:58 +09:00
Yukihiro "Matz" Matsumoto
e8f09f9393
Raise special Exception when exception class is redefined; fix #3493
2017-03-10 11:43:25 +09:00
Yukihiro "Matz" Matsumoto
c6e5659fec
Use string#upto() if available; fix #3489
...
Terminate loop if the value is longer than the last otherwise.
2017-03-10 10:39:43 +09:00
Yukihiro "Matz" Matsumoto
4763312fb8
Terminate loop if generated string longer than the last; ref #3489
2017-03-10 10:38:28 +09:00
Yukihiro "Matz" Matsumoto
63dbed0094
__FILE__ should not update p->filename; fix #3485
2017-03-07 15:01:09 +09:00
Yukihiro "Matz" Matsumoto
513f4fbf14
Merge pull request #3484 from ksss/string-frozen
...
Check modifiable for String `bang' methods
2017-03-06 07:38:56 +09:00
Yukihiro "Matz" Matsumoto
8a15abdac2
Avoid trampoline code if mrb_f_send is called from funcall; fix #3383
2017-03-06 07:35:41 +09:00
ksss
eba4b1fd76
Check modifiable for String `bang' methods
2017-03-05 23:04:22 +09:00
Yukihiro "Matz" Matsumoto
d050694580
Merge pull request #3483 from ksss/string-index
...
String#index shouldn't return nil when "".index ""
2017-03-05 20:27:28 +09:00
ksss
76e10351fa
String#index shouldn't return nil when "".index ""
2017-03-05 14:15:18 +09:00