This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
document qw's whitespace rules
[perl5.git] / cv.h
diff --git a/cv.h b/cv.h
index d4dfd2d..dac83fa 100644 (file)
--- a/cv.h
+++ b/cv.h
@@ -234,7 +234,17 @@ CvNAME_HEK(CV *sv)
        ? ((XPVCV*)MUTABLE_PTR(SvANY(sv)))->xcv_gv_u.xcv_hek
        : 0;
 }
-/* This lowers the refernce count of the previous value, but does *not*
+
+/* helper for the common pattern:
+   CvNAMED(sv) ? CvNAME_HEK((CV *)sv) : GvNAME_HEK(CvGV(sv))
+*/
+#define CvGvNAME_HEK(sv) ( \
+        CvNAMED((CV*)sv) ? \
+            ((XPVCV*)MUTABLE_PTR(SvANY((SV*)sv)))->xcv_gv_u.xcv_hek\
+            : GvNAME_HEK(CvGV( (SV*) sv)) \
+        )
+
+/* This lowers the reference count of the previous value, but does *not*
    increment the reference count of the new value. */
 #define CvNAME_HEK_set(cv, hek) ( \
        CvNAME_HEK((CV *)(cv))                                           \
@@ -264,7 +274,7 @@ There is a further complication with non-closure anonymous subs (i.e. those
 that do not refer to any lexicals outside that sub).  In this case, the
 anonymous prototype is shared rather than being cloned.  This has the
 consequence that the parent may be freed while there are still active
-children, eg
+children, I<e.g.>,
 
     BEGIN { $a = sub { eval '$x' } }