int DictionaryObject::nextNameIndex(int index) { AvmAssert(index >= 0); if (index != 0) { index = index<<1; } Hashtable *ht = getTable(); // this can happen if you break in debugger in a subclasses constructor before super // has been called #ifdef DEBUGGER if(!ht) { return 0; } #endif // DEBUGGER // Advance to first non-empty slot. int numAtoms = ht->getNumAtoms(); while (index < numAtoms) { Atom a = ht->getAtoms()[index]; if(weakKeys && AvmCore::isGCObject(a)) { GCWeakRef *weakRef = (GCWeakRef*)AvmCore::atomToGCObject(a); if(weakRef->get()) return (index>>1)+1; else { ht->getAtoms()[index] = Hashtable::DELETED; ht->getAtoms()[index+1] = Hashtable::DELETED; ht->setHasDeletedItems(true); } } else if(a != 0 && a != Hashtable::DELETED) {