Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: master
Commits on Feb 28, 2015
  1. Yukihiro "Matz" Matsumoto

    Merge pull request #2738 from kou/use-ptrdiff-t

    matz authored
    Use ptrdiff_t to suppress signedness warning
  2. Kouhei Sutou

    Use ptrdiff_t to suppress signedness warning

    kou authored
    3df3216 says so but there is no warning
    with GCC 4.9 on my Debian GNU/Linux environment.
Commits on Feb 27, 2015
  1. Yukihiro "Matz" Matsumoto

    Merge pull request #2736 from cremno/delete-prototypes-of-undefined-f…

    matz authored
    …unctions
    
    delete prototypes of undefined functions
  2. Yukihiro "Matz" Matsumoto
  3. Yukihiro "Matz" Matsumoto
Commits on Feb 26, 2015
  1. cremno
  2. Yukihiro "Matz" Matsumoto

    Merge pull request #2732 from kou/fix-a-crash-bug-on-raise-after-realloc

    matz authored
    Fix a crash bug on raising after realloc
Commits on Feb 24, 2015
  1. Kouhei Sutou

    Fix a crash bug on raising after realloc

    kou authored
    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.
  2. Yukihiro "Matz" Matsumoto

    Merge pull request #2730 from kou/fix-no-expression-case

    matz authored
    Fix a bug that no expression case doesn't return valid value
  3. Kouhei Sutou

    Fix a bug that no expression case doesn't return valid value

    kou authored
    Here is a script that reproduces this problem:
    
         x = case
             when true; 1
             end
         p x # => main # 1 is expected
  4. Yukihiro "Matz" Matsumoto

    Merge pull request #2729 from kou/fix-if-and-no-value-returned-case

    matz authored
    Fix a bug that if and no return value case can't return true clause value
  5. Yukihiro "Matz" Matsumoto

    Merge pull request #2728 from govm/fix-dereference-invalid-argv

    matz authored
    fix pointer dereference after realloc
Commits on Feb 23, 2015
  1. Kouhei Sutou

    Fix a bug that if and no return value case can't return true clause v…

    kou authored
    …alue
    
    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
  2. Go Saito

    fix pointer dereference after realloc

    govm authored
    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 <gos@iij.ad.jp>
Commits on Feb 19, 2015
  1. Yukihiro "Matz" Matsumoto
  2. Yukihiro "Matz" Matsumoto
  3. Yukihiro "Matz" Matsumoto
Commits on Feb 16, 2015
  1. Yukihiro "Matz" Matsumoto

    silence warnings in fmt_fp.c

    matz authored
  2. Yukihiro "Matz" Matsumoto

    Merge pull request #2723 from cremno/use-musl-fmt_fp

    matz authored
    re-implement mrb_float_to_str()
Commits on Feb 13, 2015
  1. cremno

    re-implement mrb_float_to_str()

    cremno authored
    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).
  2. Yukihiro "Matz" Matsumoto

    Merge pull request #2722 from sgnr/disable-stdio-enable-backtraces

    matz authored
    Make backtraces work again under DISABLE_STDIO
  3. Yukihiro "Matz" Matsumoto

    Merge pull request #2721 from kou/add-more-debug-flags

    matz authored
    Add more debug flags for GCC based compilers
Commits on Feb 12, 2015
  1. Simon Génier
Commits on Feb 10, 2015
  1. Kouhei Sutou

    Add more debug flags for GCC based compilers

    kou authored
    We can use `#define`-ed macros in GDB with `-g3` flag.
    
    We can run code step by step in GDB with `-O0` flag.
Commits on Feb 7, 2015
  1. Yukihiro "Matz" Matsumoto

    Merge pull request #2719 from suzukaze/delete-temp-variable

    matz authored
    Delete temp variable
Commits on Feb 6, 2015
  1. Jun Hiroe
  2. Jun Hiroe
  3. Yukihiro "Matz" Matsumoto

    Merge pull request #2718 from matsumoto-r/update-mruby-config

    matz authored
    mruby-config supports MRUBY_LDFLAGS_BEFORE_LIBS in libmruby.flags.mak
  4. Yukihiro "Matz" Matsumoto

    Merge pull request #2717 from sgnr/missing-lastpc-on-funcall-cfunc

    matz authored
    Fix possible segfault when accessing backtrace with MRB_WORD_BOXING.
  5. MATSUMOTO, Ryosuke
  6. Yukihiro "Matz" Matsumoto

    Merge pull request #2716 from kou/fix-ensure-context-on-break-and-return

    matz authored
    Fix ensure with yield context on break and return
Commits on Feb 5, 2015
  1. Simon Génier
  2. Kouhei Sutou

    Fix ensure with yield context on break and return

    kou authored
    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.
Commits on Feb 2, 2015
  1. Yukihiro "Matz" Matsumoto

    Merge pull request #2715 from suzukaze/fix-dump.c

    matz authored
    Replace int with mrb_bool in dump_bigendian_p func
  2. Jun Hiroe
Something went wrong with that request. Please try again.