summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicholas Clark <nick@ccl4.org>2006-05-19 21:44:14 +0000
committerNicholas Clark <nick@ccl4.org>2006-05-19 21:44:14 +0000
commitec2a1de722601129850327b38324ac227c58147a (patch)
tree878e2d1ea608110670452f49b076da5b00a58cc6
parentd2317f5992d5f2c94bab7f9255eb080a8a677efb (diff)
downloadperl-ec2a1de722601129850327b38324ac227c58147a.tar.gz
Correct Perl_refcounted_he_chain_2hv() and its caller - it doesn't
store a reference to the value, so don't pass it in a new SV. p4raw-id: //depot/perl@28245
-rw-r--r--hv.c7
-rw-r--r--mg.c2
-rw-r--r--pod/perlintern.pod7
3 files changed, 7 insertions, 9 deletions
diff --git a/hv.c b/hv.c
index 8630adf8bb..b6bc29e4b3 100644
--- a/hv.c
+++ b/hv.c
@@ -2674,10 +2674,9 @@ Perl_refcounted_he_chain_2hv(pTHX_ const struct refcounted_he *chain)
/*
=for apidoc refcounted_he_new
-Creates a new C<struct refcounted_he>. Assumes ownership of one reference
-to I<value>. As S<key> is copied into a shared hash key, all references remain
-the property of the caller. The C<struct refcounted_he> is returned with a
-reference count of 1.
+Creates a new C<struct refcounted_he>. As S<key> is copied, and value is
+stored in a compact form, all references remain the property of the caller.
+The C<struct refcounted_he> is returned with a reference count of 1.
=cut
*/
diff --git a/mg.c b/mg.c
index 7e7372d7f4..c8c935af90 100644
--- a/mg.c
+++ b/mg.c
@@ -2877,7 +2877,7 @@ Perl_magic_sethint(pTHX_ SV *sv, MAGIC *mg)
PL_hints |= HINT_LOCALIZE_HH;
PL_compiling.cop_hints
= Perl_refcounted_he_new(aTHX_ PL_compiling.cop_hints,
- (SV *)mg->mg_ptr, newSVsv(sv));
+ (SV *)mg->mg_ptr, sv);
return 0;
}
diff --git a/pod/perlintern.pod b/pod/perlintern.pod
index 7fc71149d5..b79d54e874 100644
--- a/pod/perlintern.pod
+++ b/pod/perlintern.pod
@@ -500,10 +500,9 @@ Found in file hv.c
=item refcounted_he_new
X<refcounted_he_new>
-Creates a new C<struct refcounted_he>. Assumes ownership of one reference
-to I<value>. As S<key> is copied into a shared hash key, all references remain
-the property of the caller. The C<struct refcounted_he> is returned with a
-reference count of 1.
+Creates a new C<struct refcounted_he>. As S<key> is copied, and value is
+stored in a compact form, all references remain the property of the caller.
+The C<struct refcounted_he> is returned with a reference count of 1.
struct refcounted_he * refcounted_he_new(struct refcounted_he *const parent, SV *const key, SV *const value)