This is a better choice for an "is it empty?" optimisation, as HvARRAY()
can be non-NULL even when there actually are no keys.
PERL_ARGS_ASSERT_DUMP_PACKSUBS_PERL;
- if (!HvARRAY(stash))
+ if (!HvTOTALKEYS(stash))
return;
for (i = 0; i <= (I32) HvMAX(stash); i++) {
const HE *entry;
}
if (nest < maxnest) {
HV * const hv = MUTABLE_HV(sv);
- STRLEN i;
- HE *he;
- if (HvARRAY(hv)) {
+ if (HvTOTALKEYS(hv)) {
+ STRLEN i;
int count = maxnest - nest;
for (i=0; i <= HvMAX(hv); i++) {
+ HE *he;
for (he = HvARRAY(hv)[i]; he; he = HeNEXT(he)) {
U32 hash;
SV * keysv;
}
}
xhv = (XPVHV*)SvANY(hv);
- if (!HvARRAY(hv))
+ if (!HvTOTALKEYS(hv))
return NULL;
if (is_utf8 && !(k_flags & HVhek_KEYCANONICAL)) {
EXTEND_MORTAL(1);
PL_tmps_stack[++PL_tmps_ix] = SvREFCNT_inc_simple_NN(hv);
orig_ix = PL_tmps_ix;
- if (SvREADONLY(hv) && HvARRAY(hv) != NULL) {
+ if (SvREADONLY(hv) && HvTOTALKEYS(hv)) {
/* restricted hash: convert all keys to placeholders */
STRLEN i;
for (i = 0; i <= xhv->xhv_max; i++) {
/* reset variables */
- if (!HvARRAY(stash))
+ if (!HvTOTALKEYS(stash))
return;
Zero(todo, 256, char);
PERL_ARGS_ASSERT_FIND_HASH_SUBSCRIPT;
- if (!hv || SvMAGICAL(hv) || !HvARRAY(hv) ||
+ if (!hv || SvMAGICAL(hv) || !HvTOTALKEYS(hv) ||
(HvTOTALKEYS(hv) > FUV_MAX_SEARCH_SIZE))
return NULL;