This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Make XS sort routines work again
[perl5.git] / ext / XS-APItest / APItest.xs
index d1d3fc0..f5aa9bd 100644 (file)
@@ -1065,8 +1065,8 @@ filter_call(pTHX_ int idx, SV *buf_sv, int maxlen)
 
 static AV *
 myget_linear_isa(pTHX_ HV *stash, U32 level) {
-    PERL_UNUSED_ARG(level);
     GV **gvp = (GV **)hv_fetchs(stash, "ISA", 0);
+    PERL_UNUSED_ARG(level);
     return gvp && *gvp && GvAV(*gvp)
         ? GvAV(*gvp)
         : (AV *)sv_2mortal((SV *)newAV());
@@ -1155,12 +1155,6 @@ BOOT:
     newXS("XS::APItest::XSUB::XS_VERSION_undef", XS_XS__APItest__XSUB_XS_VERSION_undef, __FILE__);
     newXS("XS::APItest::XSUB::XS_VERSION_empty", XS_XS__APItest__XSUB_XS_VERSION_empty, __FILE__);
     newXS("XS::APItest::XSUB::XS_APIVERSION_invalid", XS_XS__APItest__XSUB_XS_APIVERSION_invalid, __FILE__);
-    mymro.resolve = myget_linear_isa;
-    mymro.name    = "justisa";
-    mymro.length  = 7;
-    mymro.kflags  = 0;
-    mymro.hash    = 0;
-    Perl_mro_register(aTHX_ &mymro);
 
 void
 XS_VERSION_defined(...)
@@ -1557,6 +1551,14 @@ MODULE = XS::APItest             PACKAGE = XS::APItest
 
 PROTOTYPES: DISABLE
 
+BOOT:
+    mymro.resolve = myget_linear_isa;
+    mymro.name    = "justisa";
+    mymro.length  = 7;
+    mymro.kflags  = 0;
+    mymro.hash    = 0;
+    Perl_mro_register(aTHX_ &mymro);
+
 HV *
 xop_custom_ops ()
     CODE:
@@ -3241,6 +3243,17 @@ CODE:
 OUTPUT:
     RETVAL
 
+int
+xs_cmp(int a, int b)
+CODE:
+    /* Odd sorting (odd numbers first), to make sure we are actually
+       being called */
+    RETVAL = a % 2 != b % 2
+              ? a % 2 ? -1 : 1
+              : a < b ? -1 : a == b ? 0 : 1;
+OUTPUT:
+    RETVAL
+
 
 MODULE = XS::APItest PACKAGE = XS::APItest::AUTOLOADtest