[MacRuby] #1076: Abort occurs when raise a SecurityError within Thread.

MacRuby ruby-noreply at macosforge.org
Thu Jan 27 19:19:46 PST 2011


#1076: Abort occurs when raise a SecurityError within Thread.
----------------------------------+-----------------------------------------
 Reporter:  watson1978@…          |        Owner:  lsansonetti@…        
     Type:  defect                |       Status:  closed               
 Priority:  blocker               |    Milestone:  MacRuby 0.9          
Component:  MacRuby               |   Resolution:  fixed                
 Keywords:                        |  
----------------------------------+-----------------------------------------

Comment(by lsansonetti@…):

 This patch should re-implement r5099, however I'm having a ruby spec
 failure (apparently in rational), so I will commit the patch once I'm sure
 it does not break anything.

 {{{

 Index: array.c
 ===================================================================
 --- array.c     (revision 5193)
 +++ array.c     (working copy)
 @@ -1805,9 +1805,15 @@
      VALUE *t = p;
      VALUE *end = p + RARY(ary)->len;

 +    bool check_modify = true;
 +
      if (use_equal) {
         while (t < end) {
             if (RTEST(rb_equal_fast(*t, item))) {
 +               if (check_modify) {
 +                   rary_modify(ary);
 +                   check_modify = false;
 +               }
                 t++;
             }
             else {
 @@ -1820,6 +1826,10 @@
      else {
         while (t < end) {
             if (*t == item) {
 +               if (check_modify) {
 +                   rary_modify(ary);
 +                   check_modify = false;
 +               }
                 t++;
             }
             else {
 @@ -1842,7 +1852,6 @@
  VALUE
  rary_delete(VALUE ary, SEL sel, VALUE item)
  {
 -    rary_modify(ary);
      const bool changed = rary_delete_element(ary, item, true);
      if (!changed) {
         if (rb_block_given_p()) {
 @@ -2835,7 +2844,6 @@
  static VALUE
  rary_compact_bang(VALUE ary, SEL sel)
  {
 -    rary_modify(ary);
      return rary_delete_element(ary, Qnil, false) ? ary : Qnil;
  }

 }}}

-- 
Ticket URL: <http://www.macruby.org/trac/ticket/1076#comment:8>
MacRuby <http://macruby.org/>



More information about the macruby-tickets mailing list