Bug 1394578 - Use gHashTable->EntryCount() to size aDomPrefs, not aCapacity(). r=glandium draft
authorNicholas Nethercote <nnethercote@mozilla.com>
Wed, 22 Nov 2017 21:21:19 +1100
changeset 702906 fb1320a01b2994baf0aefca432112e0ea4dff444
parent 702905 760e6eb36238a19c4c27b942d59c2c38bce2fb8f
child 702907 a6597c78a8a856fa0c421bab1b7939705dd42abe
push id90624
push usernnethercote@mozilla.com
push dateThu, 23 Nov 2017 23:13:32 +0000
reviewersglandium
bugs1394578
milestone59.0a1
Bug 1394578 - Use gHashTable->EntryCount() to size aDomPrefs, not aCapacity(). r=glandium As is done in pref_SavePrefs(). The confusion here is because a Vector can fill 100% of its capacity, but a hash table cannot go past 75% of its capacity. MozReview-Commit-ID: 5JMbmtrxMGN
modules/libpref/Preferences.cpp
--- a/modules/libpref/Preferences.cpp
+++ b/modules/libpref/Preferences.cpp
@@ -3642,17 +3642,17 @@ Preferences::GetPreference(dom::Pref* aD
   if (pref && pref->HasAdvisablySizedValues()) {
     pref->ToDomPref(aDomPref);
   }
 }
 
 void
 Preferences::GetPreferences(InfallibleTArray<dom::Pref>* aDomPrefs)
 {
-  aDomPrefs->SetCapacity(gHashTable->Capacity());
+  aDomPrefs->SetCapacity(gHashTable->EntryCount());
   for (auto iter = gHashTable->Iter(); !iter.Done(); iter.Next()) {
     auto pref = static_cast<PrefHashEntry*>(iter.Get());
 
     if (pref->HasAdvisablySizedValues()) {
       dom::Pref* setting = aDomPrefs->AppendElement();
       pref->ToDomPref(setting);
     }
   }