#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