summaryrefslogtreecommitdiffhomepage
path: root/src
AgeCommit message (Collapse)Author
2015-05-22Add locals null checksCarson McDonald
2015-05-22Verify that proc_lambda is passed a procCarson McDonald
2015-05-21remove an always-true conditional.Tomoyuki Sahara
2015-05-20there may be expecting here-doc when we see terminating characters; fix #2780Yukihiro "Matz" Matsumoto
2015-05-20Merge pull request #2797 from iij/pr-split-only-firstYukihiro "Matz" Matsumoto
String#split fails to split on second or later separator
2015-05-20NetBSD (6.1.5) does not have frexpl(3).Tomoyuki Sahara
2015-05-20RSTRING_PTR may be changed in while loop.Tomoyuki Sahara
2015-05-18fix type of mrb_exc_new()'s len parametercremno
mrb_str_new() takes size_t, so should mrb_exc_new().
2015-05-17Merge pull request #2792 from cremno/let-the-c-compiler-validate-the-identifierYukihiro "Matz" Matsumoto
let the C compiler validate the identifier
2015-05-15let the C compiler validate the identifiercremno
Some C compilers may allow other characters in identifiers such as $. They may also implement C99's extended identifiers (\u30EB\u30D3\u30FC, ルビー).
2015-05-15remove mrb_define_method_vm() functioncremno
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).
2015-05-14Reenable mrb_dump_irep under DISABLE_STDIO.Simon Génier
2015-05-13remove unused token declarationscremno
2015-05-08Merge pull request #2784 from cremno/fix-splat-without-assignmentYukihiro "Matz" Matsumoto
fix splat without assignment
2015-05-07fix splat without assignment; fix #2781cremno
The parser generates NODE_NIL for tSTAR without argument in masgns. The codegen didn't handle that.
2015-05-07Merge pull request #2782 from cremno/define-yydebug-macro-conditionallyYukihiro "Matz" Matsumoto
define YYDEBUG macro conditionally
2015-05-07Defining static version of frexpl also fro MIPS platforms.Paolo Bosetti
On MIPS/linaro, libm.so lacks frexpl() as CygWin does.
2015-05-04define YYDEBUG macro conditionallycremno
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.
2015-04-30push cmdarg_stack in lambda body; fix [ruby-bug#11107]Yukihiro "Matz" Matsumoto
2015-04-30Merge pull request #2778 from cremno/fix-load-size-error-macrosYukihiro "Matz" Matsumoto
src/load.c: fix size error macros
2015-04-30Merge pull request #2777 from cremno/fix-parser-locals-null-derefYukihiro "Matz" Matsumoto
parser: fix possible null dereferences
2015-04-30Merge pull request #2776 from cremno/undef-strndupYukihiro "Matz" Matsumoto
prevent accidental macro redefinition of strndup()
2015-04-29always define SIZE_ERROR_MUL() macrocremno
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.
2015-04-29remove SIZE_ERROR() macrocremno
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.
2015-04-29add more descriptive error message and fail earliercremno
2015-04-28fix null dereference (ref: #2769)cremno
parser_state->locals might be a null pointer. Fixes (and other similiar invalid code): def a; Proc.new do def x==x end end
2015-04-28prevent accidental macro redefinition of strndup()cremno
2015-04-28fix possible unsigned integer underflowcremno
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.
2015-04-28unify error handlingcremno
Convert mrb_read_irep_file() to use goto like read_section_lv() and read_section_debug() already do.
2015-04-27C++ compilation failed due to skipping iniitalization by goto out_superYukihiro "Matz" Matsumoto
2015-04-27super should not be called outside of a method; fix #2770Yukihiro "Matz" Matsumoto
2015-04-27parser_state->locals may be NULL on some error conditions; fix #2769Yukihiro "Matz" Matsumoto
2015-04-18Suppress warnings generated by -Wwrite-stringsKouhei Sutou
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
2015-03-22refactor write_pool_block()cremno
No need to write the same assertion in each case (except the default one). Instead we can assert after the switch statement.
2015-03-21execute ensure clause only when skipping call frame; fix #2726Yukihiro "Matz" Matsumoto
2015-03-16I have added the #ifdef __CYGWIN32__ to modify the fmt_fp.cTarosa
2015-03-16I modified the undefined frexpl in cygwin of makeTarosa
2015-03-05stack_extend in mrb_f_sendGo Saito
mrb_f_send needs stack_extend like OP_SEND Signed-off-by: Go Saito <[email protected]>
2015-02-28Use ptrdiff_t to suppress signedness warningKouhei Sutou
3df32161797aa9c6e9df259e8d8571b454cb2333 says so but there is no warning with GCC 4.9 on my Debian GNU/Linux environment.
2015-02-27Merge pull request #2736 from cremno/delete-prototypes-of-undefined-functionsYukihiro "Matz" Matsumoto
delete prototypes of undefined functions
2015-02-27fix MSVC initialization issue by a patch from @dyama; close #2734Yukihiro "Matz" Matsumoto
2015-02-27change size_t to ptrdiff_t to silence signedness warnings; #2732Yukihiro "Matz" Matsumoto
2015-02-26delete prototypes of undefined functionscremno
2015-02-25Fix a crash bug on raising after reallocKouhei Sutou
The following program reproduces this problem: #include <mruby.h> static mrb_value recursive(mrb_state *mrb, mrb_value self) { mrb_int n; mrb_get_args(mrb, "i", &n); if (n == 0) { mrb_raise(mrb, E_RUNTIME_ERROR, "XXX"); } else { mrb_funcall(mrb, self, "recursive", 1, mrb_fixnum_value(n - 1)); } return self; } int main(void) { mrb_state *mrb; mrb = mrb_open(); mrb_define_method(mrb, mrb->kernel_module, "recursive", recursive, MRB_ARGS_REQ(1)); mrb_funcall(mrb, mrb_top_self(mrb), "recursive", 1, mrb_fixnum_value(30)); mrb_close(mrb); } Recursive method call isn't required. It's just for expanding call info stack. If mrb_realloc() is called in cipush(), cibase address is changed. So, we shouldn't compare ci before mrb_realloc() and cibase after mrb_realloc(). It accesses unknown address and causes crash.
2015-02-24Fix a bug that no expression case doesn't return valid valueKouhei Sutou
Here is a script that reproduces this problem: x = case when true; 1 end p x # => main # 1 is expected
2015-02-24Merge pull request #2729 from kou/fix-if-and-no-value-returned-caseYukihiro "Matz" Matsumoto
Fix a bug that if and no return value case can't return true clause value
2015-02-24Fix a bug that if and no return value case can't return true clause valueKouhei Sutou
Here is a script that reproduce this problem: x = if true 1 else case 2 when 3 end 4 end p x # => nil # 1 is expected
2015-02-23fix pointer dereference after reallocGo Saito
In src/vm.c: mrb_funcall_with_block stack_extend may realloc mrb->c->stbase, if argv points on mruby's stack, then it points invalid address after stack_extend. e.g. src/class.c: mrb_instance_new This code: ```ruby class A def initialize(a0,a1,a2,a3,a4) a0.is_a? Array end end def f(a0,a1,a2,a3,a4) A.new(a0,a1,a2,a3,a4) f(a0,a1,a2,a3,a4) end f(0,1,2,3,4) ``` is expected to get exception ``` stack level too deep. (limit=(0x40000 - 128)) (SystemStackError) ``` but get segfault. Signed-off-by: Go Saito <[email protected]>
2015-02-16silence warnings in fmt_fp.cYukihiro "Matz" Matsumoto
2015-02-16Merge pull request #2723 from cremno/use-musl-fmt_fpYukihiro "Matz" Matsumoto
re-implement mrb_float_to_str()