MCPcopy Create free account
hub / github.com/F-Stack/f-stack / dictNext

Function dictNext

app/redis-6.2.6/src/dict.c:589–622  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

587}
588
589dictEntry *dictNext(dictIterator *iter)
590{
591 while (1) {
592 if (iter->entry == NULL) {
593 dictht *ht = &iter->d->ht[iter->table];
594 if (iter->index == -1 && iter->table == 0) {
595 if (iter->safe)
596 dictPauseRehashing(iter->d);
597 else
598 iter->fingerprint = dictFingerprint(iter->d);
599 }
600 iter->index++;
601 if (iter->index >= (long) ht->size) {
602 if (dictIsRehashing(iter->d) && iter->table == 0) {
603 iter->table++;
604 iter->index = 0;
605 ht = &iter->d->ht[1];
606 } else {
607 break;
608 }
609 }
610 iter->entry = ht->table[iter->index];
611 } else {
612 iter->entry = iter->nextEntry;
613 }
614 if (iter->entry) {
615 /* We need to save the 'next' here, the iterator user
616 * may delete the entry we are returning. */
617 iter->nextEntry = iter->entry->next;
618 return iter->entry;
619 }
620 }
621 return NULL;
622}
623
624void dictReleaseIterator(dictIterator *iter)
625{

Calls 1

dictFingerprintFunction · 0.85

Tested by

no test coverage detected