sv.c: Don’t cache utf8 length on gmagical SVs
authorFather Chrysostomos <sprout@cpan.org>
Fri, 28 Sep 2012 21:01:53 +0000 (14:01 -0700)
committerFather Chrysostomos <sprout@cpan.org>
Mon, 1 Oct 2012 19:51:55 +0000 (12:51 -0700)
The cache will just be invalidate on the next fetch.  This commit avoids
extra work in those cases that are detectable.  We still have to invali-
date caches in mg_get, because caches can be created while magic is
being called and SvMAGICAL is off.

sv.c

diff --git a/sv.c b/sv.c
index 493ab7b..641b56f 100644 (file)
--- a/sv.c
+++ b/sv.c
@@ -6837,7 +6837,7 @@ S_utf8_mg_len_cache_update(pTHX_ SV *const sv, MAGIC **const mgp,
                           const STRLEN ulen)
 {
     PERL_ARGS_ASSERT_UTF8_MG_LEN_CACHE_UPDATE;
-    if (SvREADONLY(sv) || !SvPOK(sv))
+    if (SvREADONLY(sv) || SvGMAGICAL(sv) || !SvPOK(sv))
        return;
 
     if (!*mgp && (SvTYPE(sv) < SVt_PVMG ||