Revision: 4361 http://trac.macosforge.org/projects/ruby/changeset/4361 Author: lsansonetti@apple.com Date: 2010-07-14 16:32:17 -0700 (Wed, 14 Jul 2010) Log Message: ----------- <rdar://problem/8191999> rubyfuzz: crash in rb_ary_ptr / rb_rational_reciprocal Modified Paths: -------------- MacRuby/trunk/rational.c Modified: MacRuby/trunk/rational.c =================================================================== --- MacRuby/trunk/rational.c 2010-07-14 20:37:07 UTC (rev 4360) +++ MacRuby/trunk/rational.c 2010-07-14 23:32:17 UTC (rev 4361) @@ -1582,13 +1582,13 @@ nurat_marshal_load(VALUE self, SEL sel, VALUE a) { get_dat1(self); - dat->num = RARRAY_PTR(a)[0]; - dat->den = RARRAY_PTR(a)[1]; - rb_copy_generic_ivar(self, a); - - if (f_zero_p(dat->den)) + VALUE ary = rb_convert_type(a, T_ARRAY, "Array", "to_ary"); + dat->num = RARRAY_AT(ary, 0); + dat->den = RARRAY_AT(ary ,1); + rb_copy_generic_ivar(self, ary); + if (f_zero_p(dat->den)) { rb_raise_zerodiv(); - + } return self; }