From: Nicholas Clark Date: Tue, 2 Jun 2009 10:36:35 +0000 (+0100) Subject: In Perl_hv_iternext_flags(), clarify and generalise the empty hash bailout code. X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=9eb4ebd1619c036262f136e58c5c5417c17be57c;p=p5sagit%2Fp5-mst-13.2.git In Perl_hv_iternext_flags(), clarify and generalise the empty hash bailout code. --- diff --git a/hv.c b/hv.c index 5f233d6..ebb10fb 100644 --- a/hv.c +++ b/hv.c @@ -2144,10 +2144,9 @@ Perl_hv_iternext_flags(pTHX_ HV *hv, I32 flags) } } - /* Quick bailout if the hash is empty anyway. - I don't know if placeholders are included in the KEYS count, so a defensive check - */ - if (HvKEYS(hv) || (flags & HV_ITERNEXT_WANTPLACEHOLDERS)) { + /* Skip the entire loop if the hash is empty. */ + if ((flags & HV_ITERNEXT_WANTPLACEHOLDERS) + ? HvTOTALKEYS(hv) : HvUSEDKEYS(hv)) { while (!entry) { /* OK. Come to the end of the current list. Grab the next one. */