summaryrefslogtreecommitdiff
path: root/gv.c
diff options
context:
space:
mode:
authorTony Cook <tony@develop-help.com>2022-11-17 14:30:39 +1100
committerJames E Keenan <jkeenan@cpan.org>2022-11-18 18:12:45 -0500
commit2e4090b82403991910f1fe64866048b62ccf5402 (patch)
tree8ca250b0bfb4e386128336ee73db71caba26c032 /gv.c
parenta33534361e54c6342c59edd0c06b6bbb9ac5776c (diff)
downloadperl-2e4090b82403991910f1fe64866048b62ccf5402.tar.gz
only fully calculate the stash (effective) name where needed
gcc 12 was complaining that evaluating (somehekptr)->hek_key was always true in many places where HvNAME() or HvENAME() was being called in boolean context. Add new macros to check whether the names should be available and use those instead.
Diffstat (limited to 'gv.c')
-rw-r--r--gv.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/gv.c b/gv.c
index 0145644e47..0982fee380 100644
--- a/gv.c
+++ b/gv.c
@@ -1628,7 +1628,7 @@ S_gv_stashpvn_internal(pTHX_ const char *name, U32 namelen, I32 flags)
stash = GvHV(tmpgv);
if (!(flags & ~GV_NOADD_MASK) && !stash) return NULL;
assert(stash);
- if (!HvNAME_get(stash)) {
+ if (!HvHasNAME(stash)) {
hv_name_set(stash, name, namelen, flags & SVf_UTF8 ? SVf_UTF8 : 0 );
/* FIXME: This is a repeat of logic in gv_fetchpvn_flags */
@@ -1834,7 +1834,7 @@ S_parse_gv_stash_name(pTHX_ HV **stash, GV **gv, const char **name,
if (!(*stash = GvHV(*gv))) {
*stash = GvHV(*gv) = newHV();
- if (!HvNAME_get(*stash)) {
+ if (!HvHasNAME(*stash)) {
if (GvSTASH(*gv) == PL_defstash && *len == 6
&& strBEGINs(*name, "CORE"))
hv_name_sets(*stash, "CORE", 0);
@@ -1848,7 +1848,7 @@ S_parse_gv_stash_name(pTHX_ HV **stash, GV **gv, const char **name,
mro_package_moved(*stash, NULL, *gv, 1);
}
}
- else if (!HvNAME_get(*stash))
+ else if (!HvHasNAME(*stash))
hv_name_set(*stash, nambeg, name_cursor - nambeg, is_utf8);
}
@@ -3298,7 +3298,7 @@ Perl_gv_handler(pTHX_ HV *stash, I32 id)
U32 newgen;
struct mro_meta* stash_meta;
- if (!stash || !HvNAME_get(stash))
+ if (!stash || !HvHasNAME(stash))
return NULL;
stash_meta = HvMROMETA(stash);