1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* iseq.h: iseq_catch_table_entry::catch_type should be

Fixnum because they are pushed into Array in a compiler.
  [Bug #7502]
* test/ruby/test_objectspace.rb: add a test of this issue.



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38156 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
ko1 2012-12-03 10:03:25 +00:00
parent 17a2be29b9
commit c4f9dd2626
3 changed files with 27 additions and 6 deletions

View file

@ -1,3 +1,11 @@
Mon Dec 3 18:29:27 2012 Koichi Sasada <ko1@atdot.net>
* iseq.h: iseq_catch_table_entry::catch_type should be
Fixnum because they are pushed into Array in a compiler.
[Bug #7502]
* test/ruby/test_objectspace.rb: add a test of this issue.
Mon Dec 3 18:25:16 2012 Nobuyoshi Nakada <nobu@ruby-lang.org>
* template/id.h.tmpl (preserved_ids): "empty?" is not an attribute name.

12
iseq.h
View file

@ -55,12 +55,12 @@ struct iseq_line_info_entry {
struct iseq_catch_table_entry {
enum catch_type {
CATCH_TYPE_RESCUE,
CATCH_TYPE_ENSURE,
CATCH_TYPE_RETRY,
CATCH_TYPE_BREAK,
CATCH_TYPE_REDO,
CATCH_TYPE_NEXT
CATCH_TYPE_RESCUE = INT2FIX(1),
CATCH_TYPE_ENSURE = INT2FIX(2),
CATCH_TYPE_RETRY = INT2FIX(3),
CATCH_TYPE_BREAK = INT2FIX(4),
CATCH_TYPE_REDO = INT2FIX(5),
CATCH_TYPE_NEXT = INT2FIX(6)
} type;
VALUE iseq;
unsigned long start;

View file

@ -65,4 +65,17 @@ End
END
assert_raise(ArgumentError) { ObjectSpace.define_finalizer([], Object.new) }
end
def test_each_object
GC.disable
eval('begin; 1.times{}; rescue; ensure; end')
arys = []
ObjectSpace.each_object(Array){|ary|
arys << ary
}
GC.enable
arys.each{|ary|
assert_equal(String, ary.inspect.class) # should not cause SEGV
}
end
end