| Age | Commit message (Collapse) | Author |
|
The rest lhs variable has to be an empty array if rhs is an array with
less elements than pre + post lhs variables. The codegen generated
OP_ARRAY with an invalid length (such as 127 for *a, b = []) because rn
was negative.
|
|
|
|
check if outer is a class or module
|
|
For modules this check didn't exist yet. Also call #inspect.
|
|
It's just a copy of the code in the previous case (NODE_CALL).
|
|
fix capture group index bug
|
|
atoi() is used to convert the index to an int but the behavior is
undefined if the value can't be represented.
> $9999999999
00007 NODE_SCOPE:
00007 NODE_BEGIN:
00007 NODE_NTH_REF: $2147483647
irep 00630580 nregs=2 nlocals=1 pools=0 syms=1 reps=0
file: (mirb)
7 000 OP_GETGLOBAL R1 :$2147483647
7 001 OP_STOP
Call strtoul() instead as its behavior in such cases is defined and add
a simple range check.
Alternatively NODE_NTH_REF's cdr could be changed from int to mrb_sym
(like NODE_GVAR).
|
|
Not needed anymore since 85075bef7583edd0a48cfbdfaa632cbdacf78f2c
|
|
Related to #2760.
|
|
Move `mrb_codedump_all` to "src/codedump.c".
|
|
|
|
Related to #2760.
|
|
Add locals null checks
|
|
|
|
|
|
|
|
|
|
String#split fails to split on second or later separator
|
|
|
|
|
|
mrb_str_new() takes size_t, so should mrb_exc_new().
|
|
let the C compiler validate the identifier
|
|
Some C compilers may allow other characters in identifiers such as $.
They may also implement C99's extended identifiers (\u30EB\u30D3\u30FC,
ルビー).
|
|
It isn't needed as it's very similar to mrb_define_method_raw() and also
there's only one place where mrb_proc_ptr() actually has to be called.
Inspired by @furunkel's method cache patch (#2764).
|
|
|
|
|
|
fix splat without assignment
|
|
The parser generates NODE_NIL for tSTAR without argument in masgns. The
codegen didn't handle that.
|
|
define YYDEBUG macro conditionally
|
|
On MIPS/linaro, libm.so lacks frexpl() as CygWin does.
|
|
The YYDEBUG macro enables parser debugging which
unnecessarily increases the executable size (9 to 10 KB).
Now it only will be defined when PARSER_DEBUG is too.
|
|
|
|
src/load.c: fix size error macros
|
|
parser: fix possible null dereferences
|
|
prevent accidental macro redefinition of strndup()
|
|
Previously there wasn't a way to trigger the useful definition, but it
is needed and that in every case to check for integer overflow due to
multiplication and faulty/modified binary files.
Also change existing code to a calloc()-like parameter order.
|
|
It's only used once and in that case it isn't necessary anyway, since
size_t must be at least 32 bits wide and
the max. length of a filename is UINT16_MAX.
|
|
|
|
parser_state->locals might be a null pointer.
Fixes (and other similiar invalid code):
def a; Proc.new do def x==x end end
|
|
|
|
buf_size has to be greater than header_size, otherwise subtracting
header_size from buf_size will cause an integer underflow.
Being equal to header_size is fine, however useless, so quit early.
|
|
Convert mrb_read_irep_file() to use goto like read_section_lv() and
read_section_debug() already do.
|
|
|
|
|
|
|
|
Here are suppressed warnings:
src/fmt_fp.c: In function 'fmt_fp':
src/fmt_fp.c:124:16: warning: initialization discards 'const' qualifier from pointer target type
char *ss = (t&32)?"inf":"INF";
^
src/fmt_fp.c:125:17: warning: assignment discards 'const' qualifier from pointer target type
if (y!=y) ss=(t&32)?"nan":"NAN";
^
mrbgems/mruby-string-ext/src/string.c: In function 'mrb_str_succ_bang':
mrbgems/mruby-string-ext/src/string.c:302:27: warning: assignment discards 'const' qualifier from pointer target type
if (e == b) prepend = "1";
^
mrbgems/mruby-string-ext/src/string.c:305:27: warning: assignment discards 'const' qualifier from pointer target type
if (e == b) prepend = "a";
^
mrbgems/mruby-string-ext/src/string.c:308:27: warning: assignment discards 'const' qualifier from pointer target type
if (e == b) prepend = "A";
^
mrbgems/mruby-bin-mruby/tools/mruby/mruby.c: In function 'main':
mrbgems/mruby-bin-mruby/tools/mruby/mruby.c:213:13: warning: assignment discards 'const' qualifier from pointer target type
cmdline = args.cmdline ? args.cmdline : "-";
^
mrbgems/mruby-bin-debugger/tools/mrdb/cmdbreak.c: In function 'print_breakpoint':
mrbgems/mruby-bin-debugger/tools/mrdb/cmdbreak.c:159:3: warning: initialization discards 'const' qualifier from pointer target type
char* enable_letter[] = {BREAK_INFO_MSG_DISABLE, BREAK_INFO_MSG_ENABLE};
^
mrbgems/mruby-bin-debugger/tools/mrdb/cmdbreak.c:159:3: warning: initialization discards 'const' qualifier from pointer target type
|
|
No need to write the same assertion in each case (except the default
one). Instead we can assert after the switch statement.
|
|
|
|
|
|
|