mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-17 23:35:34 +00:00
Bug 1411480 - Make PrefValue::mStringVal const. r=glandium.
This makes it clear that the stored string values are never modified. It requires some const_casts to free the strings, but that feels like an ok trade-off. MozReview-Commit-ID: JikBT3uwpfq --HG-- extra : rebase_source : e611e57de4f059275ae2908f7300065cf953461d
This commit is contained in:
parent
9702633811
commit
9222ab2401
@ -148,7 +148,7 @@ static const uint32_t MAX_PREF_LENGTH = 1 * 1024 * 1024;
|
||||
static const uint32_t MAX_ADVISABLE_PREF_LENGTH = 4 * 1024;
|
||||
|
||||
union PrefValue {
|
||||
char* mStringVal;
|
||||
const char* mStringVal;
|
||||
int32_t mIntVal;
|
||||
bool mBoolVal;
|
||||
};
|
||||
@ -262,12 +262,8 @@ ClearPrefEntry(PLDHashTable* aTable, PLDHashEntryHdr* aEntry)
|
||||
{
|
||||
auto pref = static_cast<PrefHashEntry*>(aEntry);
|
||||
if (pref->mPrefFlags.IsTypeString()) {
|
||||
if (pref->mDefaultPref.mStringVal) {
|
||||
free(pref->mDefaultPref.mStringVal);
|
||||
}
|
||||
if (pref->mUserPref.mStringVal) {
|
||||
free(pref->mUserPref.mStringVal);
|
||||
}
|
||||
free(const_cast<char*>(pref->mDefaultPref.mStringVal));
|
||||
free(const_cast<char*>(pref->mUserPref.mStringVal));
|
||||
}
|
||||
|
||||
// Don't need to free this because it's allocated in memory owned by
|
||||
@ -469,7 +465,7 @@ PREF_SetCharPref(const char* aPrefName, const char* aValue, bool aSetDefault)
|
||||
}
|
||||
|
||||
PrefValue pref;
|
||||
pref.mStringVal = const_cast<char*>(aValue);
|
||||
pref.mStringVal = aValue;
|
||||
|
||||
return pref_HashPref(
|
||||
aPrefName, pref, PrefType::String, aSetDefault ? kPrefSetDefault : 0);
|
||||
@ -604,7 +600,7 @@ pref_EntryHasAdvisablySizedValues(PrefHashEntry* aHashEntry)
|
||||
return true;
|
||||
}
|
||||
|
||||
char* stringVal;
|
||||
const char* stringVal;
|
||||
if (aHashEntry->mPrefFlags.HasDefault()) {
|
||||
stringVal = aHashEntry->mDefaultPref.mStringVal;
|
||||
if (strlen(stringVal) > MAX_ADVISABLE_PREF_LENGTH) {
|
||||
@ -697,7 +693,7 @@ PREF_CopyCharPref(const char* aPrefName, char** aValueOut, bool aGetDefault)
|
||||
}
|
||||
|
||||
nsresult rv = NS_ERROR_UNEXPECTED;
|
||||
char* stringVal;
|
||||
const char* stringVal;
|
||||
PrefHashEntry* pref = pref_HashTableLookup(aPrefName);
|
||||
|
||||
if (pref && pref->mPrefFlags.IsTypeString()) {
|
||||
@ -950,7 +946,7 @@ pref_SetValue(PrefValue* aExistingValue,
|
||||
PrefType aNewType)
|
||||
{
|
||||
if (aExistingType == PrefType::String) {
|
||||
free(aExistingValue->mStringVal);
|
||||
free(const_cast<char*>(aExistingValue->mStringVal));
|
||||
}
|
||||
|
||||
if (aNewType == PrefType::String) {
|
||||
|
Loading…
Reference in New Issue
Block a user