#218: can't sort a PIR subclass of an RPA.
--------------------+-------------------------------------------------------
 Reporter:  coke    |       Owner:  whiteknight
     Type:  bug     |      Status:  assigned   
 Priority:  normal  |   Milestone:  1.1        
Component:  core    |     Version:             
 Severity:  high    |    Keywords:  tcl blocker
     Lang:          |       Patch:             
 Platform:  all     |  
--------------------+-------------------------------------------------------

Comment(by bacek):

 Replying to [comment:6 whiteknight]:
 > In r38217 I made a small change to the sort method. Previously, it was
 using the macro PMC_size() to determine the number of elements in the
 array, which only worked with FixedPMCArray PMCs, and not subclasses. So I
 changed that to a call to VTABLE_elements, which solves that one problem.

 This patch solves ticket but I'm not sure how "kosher" is it.

 {{{
 diff --git a/src/pmc/fixedpmcarray.pmc b/src/pmc/fixedpmcarray.pmc
 index 6eb6e9f..4146ca4 100644
 --- a/src/pmc/fixedpmcarray.pmc
 +++ b/src/pmc/fixedpmcarray.pmc
 @@ -47,7 +47,7 @@ Sort this array, optionally using the provided cmp_func
          const INTVAL n = SELF.elements();

          if (n > 1)
 -           Parrot_quicksort(interp, (void **)PMC_array(SELF), n,
 cmp_func);
 +           Parrot_quicksort(interp, (void **)SELF.get_pointer(), n,
 cmp_func);
      }

  /*
 @@ -144,6 +144,19 @@ fixed sized array).

  /*

 +=item C<void *get_pointer()>
 +
 +Get pointer to stored data. Used in sort method.
 +
 +=cut
 +
 +*/
 +
 +    VTABLE void * get_pointer() {
 +        return PMC_array(SELF);
 +    }
 +/*
 +
  =item C<INTVAL get_integer()>

  Returns the number of elements in the array.
 }}}

-- 
Ticket URL: <https://trac.parrot.org/parrot/ticket/218#comment:9>
Parrot <https://trac.parrot.org/parrot/>
Parrot Development
_______________________________________________
parrot-tickets mailing list
[email protected]
http://lists.parrot.org/mailman/listinfo/parrot-tickets

Reply via email to