This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Storable: use PERL_COMPARE macros
[perl5.git] / mro_core.c
index 809bcdf..1fc7c7c 100644 (file)
@@ -21,6 +21,7 @@
 /*
 =head1 MRO Functions
 These functions are related to the method resolution order of perl classes
+Also see L<perlmroapi>.
 
 =cut
 */
@@ -118,7 +119,8 @@ Perl_mro_get_from_name(pTHX_ SV *name) {
 
 /*
 =for apidoc mro_register
-Registers a custom mro plugin.  See L<perlmroapi> for details.
+Registers a custom mro plugin.  See L<perlmroapi> for details on this and other
+mro functions.
 
 =cut
 */
@@ -241,7 +243,7 @@ S_mro_get_linear_isa_dfs(pTHX_ HV *stash, U32 level)
 
     if (level > 100)
         Perl_croak(aTHX_
-                 "Recursive inheritance detected in package '%"HEKf"'",
+                 "Recursive inheritance detected in package '%" HEKf "'",
                   HEKfARG(stashhek));
 
     meta = HvMROMETA(stash);
@@ -790,7 +792,7 @@ Perl_mro_package_moved(pTHX_ HV * const stash, HV * const oldstash,
        if (name_count < 0) ++namep, name_count = -name_count - 1;
     }
     if (name_count == 1) {
-       if (HEK_LEN(*namep) == 4 && strnEQ(HEK_KEY(*namep), "main", 4)) {
+       if (memEQs(HEK_KEY(*namep), HEK_LEN(*namep), "main")) {
            namesv = GvNAMELEN(gv) == 1
                ? newSVpvs_flags(":", SVs_TEMP)
                : newSVpvs_flags("",  SVs_TEMP);
@@ -812,7 +814,7 @@ Perl_mro_package_moved(pTHX_ HV * const stash, HV * const oldstash,
        SV *aname;
        namesv = sv_2mortal((SV *)newAV());
        while (name_count--) {
-           if(HEK_LEN(*namep) == 4 && strnEQ(HEK_KEY(*namep), "main", 4)){
+           if(memEQs(HEK_KEY(*namep), HEK_LEN(*namep), "main")){
                aname = GvNAMELEN(gv) == 1
                         ? newSVpvs(":")
                         : newSVpvs("");
@@ -857,15 +859,15 @@ Perl_mro_package_moved(pTHX_ HV * const stash, HV * const oldstash,
        mro_isa_changed_in on each. */
     hv_iterinit(stashes);
     while((iter = hv_iternext(stashes))) {
-       HV * const stash = *(HV **)HEK_KEY(HeKEY_hek(iter));
-       if(HvENAME(stash)) {
+       HV * const this_stash = *(HV **)HEK_KEY(HeKEY_hek(iter));
+       if(HvENAME(this_stash)) {
            /* We have to restore the original meta->isa (that
               mro_gather_and_rename set aside for us) this way, in case
               one class in this list is a superclass of a another class
               that we have already encountered. In such a case, meta->isa
-
+              will have been overwritten without old entries being deleted
               from PL_isarev. */
-           struct mro_meta * const meta = HvMROMETA(stash);
+           struct mro_meta * const meta = HvMROMETA(this_stash);
            if(meta->isa != (HV *)HeVAL(iter)){
                SvREFCNT_dec(meta->isa);
                meta->isa
@@ -874,7 +876,7 @@ Perl_mro_package_moved(pTHX_ HV * const stash, HV * const oldstash,
                    : (HV *)HeVAL(iter);
                HeVAL(iter) = NULL; /* We donated our reference count. */
            }
-           mro_isa_changed_in(stash);
+           mro_isa_changed_in(this_stash);
        }
     }
 }
@@ -954,7 +956,7 @@ S_mro_gather_and_rename(pTHX_ HV * const stashes, HV * const seen_stashes,
                STRLEN len;
                const char *name = SvPVx_const(*svp, len);
                if(PL_stashcache) {
-                    DEBUG_o(Perl_deb(aTHX_ "mro_gather_and_rename clearing PL_stashcache for '%"SVf"'\n",
+                    DEBUG_o(Perl_deb(aTHX_ "mro_gather_and_rename clearing PL_stashcache for '%" SVf "'\n",
                                      SVfARG(*svp)));
                   (void)hv_delete(PL_stashcache, name, name_utf8 ? -(I32)len : (I32)len, G_DISCARD);
                 }
@@ -1369,7 +1371,7 @@ Perl_mro_set_mro(pTHX_ struct mro_meta *const meta, SV *const name)
     PERL_ARGS_ASSERT_MRO_SET_MRO;
 
     if (!which)
-        Perl_croak(aTHX_ "Invalid mro name: '%"SVf"'", name);
+        Perl_croak(aTHX_ "Invalid mro name: '%" SVf "'", name);
 
     if(meta->mro_which != which) {
        if (meta->mro_linear_current && !meta->mro_linear_all) {
@@ -1415,7 +1417,7 @@ XS(XS_mro_method_changed_in)
     classname = ST(0);
 
     class_stash = gv_stashsv(classname, 0);
-    if(!class_stash) Perl_croak(aTHX_ "No such class: '%"SVf"'!", SVfARG(classname));
+    if(!class_stash) Perl_croak(aTHX_ "No such class: '%" SVf "'!", SVfARG(classname));
 
     mro_method_changed_in(class_stash);