Bug 746920 - Uninitialised value use in nsDiskCacheMap::FlushRecords, r=hurley

This commit is contained in:
Michal Novotny 2012-08-08 12:23:15 +02:00
parent 254b25f375
commit 706334a7b6

View File

@ -369,16 +369,18 @@ nsDiskCacheMap::ShrinkRecords()
PRUint32 newRecordsPerBucket = oldRecordsPerBucket;
while (maxUsage < (newRecordsPerBucket >> 1))
newRecordsPerBucket >>= 1;
if (newRecordsPerBucket < kMinRecordCount)
newRecordsPerBucket = kMinRecordCount;
if (newRecordsPerBucket < (kMinRecordCount / kBuckets))
newRecordsPerBucket = (kMinRecordCount / kBuckets);
NS_ASSERTION(newRecordsPerBucket <= oldRecordsPerBucket,
"ShrinkRecords() can't grow records!");
if (newRecordsPerBucket == oldRecordsPerBucket)
return NS_OK;
// Move the buckets close to each other
for (bucketIndex = 0; bucketIndex < kBuckets; ++bucketIndex) {
for (bucketIndex = 1; bucketIndex < kBuckets; ++bucketIndex) {
// Move bucket
memmove(mRecordArray + bucketIndex * newRecordsPerBucket,
mRecordArray + bucketIndex * oldRecordsPerBucket,
mHeader.mBucketUsage[bucketIndex] * sizeof(nsDiskCacheRecord));
newRecordsPerBucket * sizeof(nsDiskCacheRecord));
}
// Shrink the record array memory block itself