summaryrefslogtreecommitdiff
path: root/cv.h
diff options
context:
space:
mode:
authorFather Chrysostomos <sprout@cpan.org>2013-12-28 17:28:09 -0800
committerFather Chrysostomos <sprout@cpan.org>2013-12-29 06:03:29 -0800
commit154e47c821a043f6b3b7346ca0c21e3282802f49 (patch)
tree86af52786dfdf0dc5fa32946f892da505497a7a8 /cv.h
parent72d33970ea94fe3382327160378d9bc042cb1d73 (diff)
downloadperl-154e47c821a043f6b3b7346ca0c21e3282802f49.tar.gz
Consistent spaces after dots in perlintern.pod
Diffstat (limited to 'cv.h')
-rw-r--r--cv.h20
1 files changed, 10 insertions, 10 deletions
diff --git a/cv.h b/cv.h
index 897d85f4b3..36afba7ee8 100644
--- a/cv.h
+++ b/cv.h
@@ -26,7 +26,7 @@ Null CV pointer.
=head1 CV Manipulation Functions
This section documents functions to manipulate CVs which are code-values,
-or subroutines. For more information, see L<perlguts>.
+or subroutines. For more information, see L<perlguts>.
=for apidoc Am|HV*|CvSTASH|CV* cv
Returns the stash of the CV. A stash is the symbol table hash, containing
@@ -218,19 +218,19 @@ CvNAME_HEK(CV *sv)
=for apidoc m|bool|CvWEAKOUTSIDE|CV *cv
Each CV has a pointer, C<CvOUTSIDE()>, to its lexically enclosing
-CV (if any). Because pointers to anonymous sub prototypes are
+CV (if any). Because pointers to anonymous sub prototypes are
stored in C<&> pad slots, it is a possible to get a circular reference,
-with the parent pointing to the child and vice-versa. To avoid the
+with the parent pointing to the child and vice-versa. To avoid the
ensuing memory leak, we do not increment the reference count of the CV
pointed to by C<CvOUTSIDE> in the I<one specific instance> that the parent
-has a C<&> pad slot pointing back to us. In this case, we set the
-C<CvWEAKOUTSIDE> flag in the child. This allows us to determine under what
+has a C<&> pad slot pointing back to us. In this case, we set the
+C<CvWEAKOUTSIDE> flag in the child. This allows us to determine under what
circumstances we should decrement the refcount of the parent when freeing
the child.
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
+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
@@ -246,16 +246,16 @@ and the freed BEGIN is accessed.
To avoid this, whenever a CV and its associated pad is freed, any
C<&> entries in the pad are explicitly removed from the pad, and if the
refcount of the pointed-to anon sub is still positive, then that
-child's C<CvOUTSIDE> is set to point to its grandparent. This will only
+child's C<CvOUTSIDE> is set to point to its grandparent. This will only
occur in the single specific case of a non-closure anon prototype
having one or more active references (such as C<$a> above).
One other thing to consider is that a CV may be merely undefined
-rather than freed, eg C<undef &foo>. In this case, its refcount may
+rather than freed, eg C<undef &foo>. In this case, its refcount may
not have reached zero, but we still delete its pad and its C<CvROOT> etc.
Since various children may still have their C<CvOUTSIDE> pointing at this
undefined CV, we keep its own C<CvOUTSIDE> for the time being, so that
-the chain of lexical scopes is unbroken. For example, the following
+the chain of lexical scopes is unbroken. For example, the following
should print 123:
my $x = 123;