Bug 1173247 (part 2) - Remove PL_DHashTableEnumerate() uses from nsDiskCacheBindery. r=michal.

This commit is contained in:
Nicholas Nethercote 2015-06-10 13:07:41 -07:00
Родитель fc71ecdf27
Коммит 00d9c7daa3
1 изменённых файлов: 14 добавлений и 32 удалений

46
netwerk/cache/nsDiskCacheBinding.cpp поставляемый
Просмотреть файл

@ -319,36 +319,8 @@ nsDiskCacheBindery::RemoveBinding(nsDiskCacheBinding * binding)
PR_REMOVE_AND_INIT_LINK(binding);
}
/**
* ActiveBinding : PLDHashTable enumerate function to verify active bindings
*/
PLDHashOperator
ActiveBinding(PLDHashTable * table,
PLDHashEntryHdr * hdr,
uint32_t number,
void * arg)
{
nsDiskCacheBinding * binding = ((HashTableEntry *)hdr)->mBinding;
NS_ASSERTION(binding, "### disk cache binding = nullptr!");
nsDiskCacheBinding * head = binding;
do {
if (binding->IsActive()) {
*((bool *)arg) = true;
return PL_DHASH_STOP;
}
binding = (nsDiskCacheBinding *)PR_NEXT_LINK(binding);
} while (binding != head);
return PL_DHASH_NEXT;
}
/**
* ActiveBindings : return true if any bindings have open descriptors
* ActiveBindings: return true if any bindings have open descriptors.
*/
bool
nsDiskCacheBindery::ActiveBindings()
@ -356,10 +328,20 @@ nsDiskCacheBindery::ActiveBindings()
NS_ASSERTION(initialized, "nsDiskCacheBindery not initialized");
if (!initialized) return false;
bool activeBinding = false;
PL_DHashTableEnumerate(&table, ActiveBinding, &activeBinding);
PLDHashTable::Iterator iter(&table);
while (iter.HasMoreEntries()) {
auto entry = static_cast<HashTableEntry*>(iter.NextEntry());
nsDiskCacheBinding* binding = entry->mBinding;
nsDiskCacheBinding* head = binding;
do {
if (binding->IsActive()) {
return true;
}
binding = (nsDiskCacheBinding *)PR_NEXT_LINK(binding);
} while (binding != head);
}
return activeBinding;
return false;
}
/**