[macruby-changes] [MacRuby/MacRuby] 68ac3f: fixed RoxorVM::pop_outer() leaks memory. (fixes #1...

noreply at github.com noreply at github.com
Wed May 18 02:08:29 PDT 2011


Branch: refs/heads/master
Home:   https://github.com/MacRuby/MacRuby

Commit: 68ac3fcaf1041ef9b25fb3bc940a47f41505b7e5
    https://github.com/MacRuby/MacRuby/commit/68ac3fcaf1041ef9b25fb3bc940a47f41505b7e5
Author: Kouji Takao <kouji at takao7.net>
Date:   2011-05-18 (Wed, 18 May 2011)

Changed paths:
  M class.c
  M compiler.cpp
  M compiler.h
  M debugger.cpp
  M dispatcher.cpp
  M dln.c
  M interpreter.cpp
  M kernel.c
  M proc.c
  R spec/frozen/tags/macruby/core/binding/clone_tags.txt
  R spec/frozen/tags/macruby/core/binding/dup_tags.txt
  M test_vm/block.rb
  M test_vm/dispatch.rb
  M variable.c
  M vm.cpp
  M vm.h
  M vm_eval.c

Log Message:
-----------
fixed RoxorVM::pop_outer() leaks memory. (fixes #1267)
This changes included many things. See below.

(1) fixed memory leak below.
1.instance_eval { 42 }

But did not below.
1.instance_eval "42"

I think currently MacRuby occurs memory leak in eval().

(2) occurs TypeError exception below. This is CRuby spec.
1.instance_eval "A = 10"

(3) occurs TypeError exception below. This is CRuby spec. (like above)
1.instance_eval "class A; end"

(4) passed failed test in test_vm/block.rb below.
assert ':ok', %{
  proc do
    def proc_caller(&b) b.call end
    def enclosing_method
      proc_caller { return :ok }
      :nok
    end
    p enclosing_method
  end.call
}

(5) removed outer_mask in RoxorCompiler
Because It is not used now.

(6) supported alias eval, instance_eval, module_eval and class_eval.

(7) set, push and pop outer_stack in runtime.

(8) removed rb_vm_set_outer() and rb_vm_get_outer().
because does not use original outer now.

(9) implemented Binding#dup and Binding#clone.




More information about the macruby-changes mailing list