| Age | Commit message (Collapse) | Author | |
|---|---|---|---|
| 2015-05-07 | Defining static version of frexpl also fro MIPS platforms. | Paolo Bosetti | |
| On MIPS/linaro, libm.so lacks frexpl() as CygWin does. | |||
| 2015-04-30 | push cmdarg_stack in lambda body; fix [ruby-bug#11107] | Yukihiro "Matz" Matsumoto | |
| 2015-04-30 | Merge pull request #2778 from cremno/fix-load-size-error-macros | Yukihiro "Matz" Matsumoto | |
| src/load.c: fix size error macros | |||
| 2015-04-30 | Merge pull request #2777 from cremno/fix-parser-locals-null-deref | Yukihiro "Matz" Matsumoto | |
| parser: fix possible null dereferences | |||
| 2015-04-30 | Merge pull request #2776 from cremno/undef-strndup | Yukihiro "Matz" Matsumoto | |
| prevent accidental macro redefinition of strndup() | |||
| 2015-04-29 | always define SIZE_ERROR_MUL() macro | cremno | |
| 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-29 | remove SIZE_ERROR() macro | cremno | |
| 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-29 | add more descriptive error message and fail earlier | cremno | |
| 2015-04-28 | fix 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-28 | prevent accidental macro redefinition of strndup() | cremno | |
| 2015-04-28 | fix possible unsigned integer underflow | cremno | |
| 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-28 | unify error handling | cremno | |
| Convert mrb_read_irep_file() to use goto like read_section_lv() and read_section_debug() already do. | |||
| 2015-04-27 | C++ compilation failed due to skipping iniitalization by goto out_super | Yukihiro "Matz" Matsumoto | |
| 2015-04-27 | super should not be called outside of a method; fix #2770 | Yukihiro "Matz" Matsumoto | |
| 2015-04-27 | parser_state->locals may be NULL on some error conditions; fix #2769 | Yukihiro "Matz" Matsumoto | |
| 2015-04-18 | Suppress warnings generated by -Wwrite-strings | Kouhei 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-22 | refactor 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-21 | execute ensure clause only when skipping call frame; fix #2726 | Yukihiro "Matz" Matsumoto | |
| 2015-03-16 | I have added the #ifdef __CYGWIN32__ to modify the fmt_fp.c | Tarosa | |
| 2015-03-16 | I modified the undefined frexpl in cygwin of make | Tarosa | |
| 2015-03-05 | stack_extend in mrb_f_send | Go Saito | |
| mrb_f_send needs stack_extend like OP_SEND Signed-off-by: Go Saito <[email protected]> | |||
| 2015-02-28 | Use ptrdiff_t to suppress signedness warning | Kouhei Sutou | |
| 3df32161797aa9c6e9df259e8d8571b454cb2333 says so but there is no warning with GCC 4.9 on my Debian GNU/Linux environment. | |||
| 2015-02-27 | Merge pull request #2736 from cremno/delete-prototypes-of-undefined-functions | Yukihiro "Matz" Matsumoto | |
| delete prototypes of undefined functions | |||
| 2015-02-27 | fix MSVC initialization issue by a patch from @dyama; close #2734 | Yukihiro "Matz" Matsumoto | |
| 2015-02-27 | change size_t to ptrdiff_t to silence signedness warnings; #2732 | Yukihiro "Matz" Matsumoto | |
| 2015-02-26 | delete prototypes of undefined functions | cremno | |
| 2015-02-25 | Fix a crash bug on raising after realloc | Kouhei 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-24 | Fix a bug that no expression case doesn't return valid value | Kouhei Sutou | |
| Here is a script that reproduces this problem: x = case when true; 1 end p x # => main # 1 is expected | |||
| 2015-02-24 | Merge pull request #2729 from kou/fix-if-and-no-value-returned-case | Yukihiro "Matz" Matsumoto | |
| Fix a bug that if and no return value case can't return true clause value | |||
| 2015-02-24 | Fix a bug that if and no return value case can't return true clause value | Kouhei 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-23 | fix pointer dereference after realloc | Go 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-16 | silence warnings in fmt_fp.c | Yukihiro "Matz" Matsumoto | |
| 2015-02-16 | Merge pull request #2723 from cremno/use-musl-fmt_fp | Yukihiro "Matz" Matsumoto | |
| re-implement mrb_float_to_str() | |||
| 2015-02-13 | re-implement mrb_float_to_str() | cremno | |
| The new implementation is backwards incompatible, but I couldn't find any usage outside mruby and I also couldn't think of a different and good name. All ISO C99 printf conversion specifiers for floating point numbers and an optional precision are supported. It is largely based on code from the MIT licensed musl libc (http://www.musl-libc.org/) and its floating point printing is exact (unlike the current code behind Float#to_s). | |||
| 2015-02-12 | DISABLE_STDIO does not disable backtraces. | Simon Génier | |
| 2015-02-07 | Merge pull request #2717 from sgnr/missing-lastpc-on-funcall-cfunc | Yukihiro "Matz" Matsumoto | |
| Fix possible segfault when accessing backtrace with MRB_WORD_BOXING. | |||
| 2015-02-05 | Fix possible segfault when accessing backtrace with MRB_WORD_BOXING. | Simon Génier | |
| 2015-02-05 | Fix ensure with yield context on break and return | Kouhei Sutou | |
| How to reproduce: class A def x yield ensure y end def y end end # Work A.new.x do end # Not work # trace: # [2] /tmp/a.rb:5:in A.x # [0] /tmp/a.rb:15 # /tmp/a.rb:5: undefined method 'y' for main (NoMethodError) A.new.x do break end # trace: # [2] /tmp/a.rb:5:in A.call # [0] /tmp/a.rb:19 # /tmp/a.rb:5: undefined method 'y' for main (NoMethodError) lambda do A.new.x do return end end.call `self` in ensure is broken when yield and break/return are used. | |||
| 2015-02-02 | Replace int with mrb_bool in dump_bigendian_p func | Jun Hiroe | |
| 2015-02-02 | allow endian specification of mrb files by `mrbc -e/-E` | Yukihiro "Matz" Matsumoto | |
| `mruby -b` now accepts both big/little endian mrb (compiled binary) files. `mrbc` generates mrb files in big endian for .mrb files and in native endian for C files (with -B option specified) by default. If you are cross compiling, you need to specify target endian by -e/-E options if it is different from host endian. | |||
| 2015-01-31 | block_given? should work with nested block; fix #2695 close #2712 | Yukihiro "Matz" Matsumoto | |
| 2015-01-26 | Use setter macro instead of directly setting values | Xuejie "Rafael" Xiao | |
| 2015-01-03 | Use mrb_exc_new_str_lit(). | Tatsuhiko Kubo | |
| 2014-12-27 | Use suitable type. | Tatsuhiko Kubo | |
| 2014-12-23 | Fix splat and multiple assignments | Kouhei Sutou | |
| Case1: From variable Code: a = [1, 2, 3, 4, 5] b, c, *d = a p [a, b, c, d] Before: [[1, 2, 3, 4, 5], 1, 2, []] After: [[1, 2, 3, 4, 5], 1, 2, [3, 4, 5]] Ruby: [[1, 2, 3, 4, 5], 1, 2, [3, 4, 5]] Case2: From variables Code: a = [1, 2, 3] b = [4, 5, 6, 7] c, d, *e, f, g = *a, *b p [a, b, c, d, e, f, g] Before: [[1, 2, 3], [4, 5, 6, 7], 1, 2, [], 6, 7] After: [[1, 2, 3], [4, 5, 6, 7], 1, 2, [3, 4, 5], 6, 7] Ruby: [[1, 2, 3], [4, 5, 6, 7], 1, 2, [3, 4, 5], 6, 7] Case 3: "for" Code: a = [1, 2, 3, 4, 5, 6, 7] for b, c, *d, e, f in [a] do p [a, b, c, d, e, f] end Before: [[1, 2, 3, 4, 5, 6, 7], 1, 2, [], nil, nil] After: [[1, 2, 3, 4, 5, 6, 7], 1, 2, [3, 4, 5], 6, 7] Ruby: [[1, 2, 3, 4, 5, 6, 7], 1, 2, [3, 4, 5], 6, 7] | |||
| 2014-12-19 | block_given? should return correct value when called in blocks; close #2678 | Yukihiro "Matz" Matsumoto | |
| avoid a loop to find parent's callinfo using mrb->c->cibase[env->cioff] | |||
| 2014-12-19 | block_given? should return false on top-level; ref #2678 | Yukihiro "Matz" Matsumoto | |
| 2014-12-17 | String#[]: float handling merged to #2677 | Yukihiro "Matz" Matsumoto | |
| 2014-12-17 | try to convert not only nil but every objects to fixnums; ref #2677 | Yukihiro "Matz" Matsumoto | |
| 2014-12-17 | String#[] should reject nil index | h2so5 | |
