diff options
author | wolfbeast <mcwerewolf@wolfbeast.com> | 2019-09-04 21:04:07 +0200 |
---|---|---|
committer | wolfbeast <mcwerewolf@wolfbeast.com> | 2019-09-04 21:04:07 +0200 |
commit | 4d4924e5105dbdfdcc3ff821671fba0dfeb11b11 (patch) | |
tree | bd337bd4c029744be88847e506b7e03da79e7093 /dom/indexedDB/KeyPath.cpp | |
parent | 4266966eeef44dfce422b9703692e519678610c6 (diff) | |
download | UXP-4d4924e5105dbdfdcc3ff821671fba0dfeb11b11.tar UXP-4d4924e5105dbdfdcc3ff821671fba0dfeb11b11.tar.gz UXP-4d4924e5105dbdfdcc3ff821671fba0dfeb11b11.tar.lz UXP-4d4924e5105dbdfdcc3ff821671fba0dfeb11b11.tar.xz UXP-4d4924e5105dbdfdcc3ff821671fba0dfeb11b11.zip |
Fix a crash in IndexedDB.
Diffstat (limited to 'dom/indexedDB/KeyPath.cpp')
-rw-r--r-- | dom/indexedDB/KeyPath.cpp | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/dom/indexedDB/KeyPath.cpp b/dom/indexedDB/KeyPath.cpp index 30edd8cd7..0221c9450 100644 --- a/dom/indexedDB/KeyPath.cpp +++ b/dom/indexedDB/KeyPath.cpp @@ -372,11 +372,13 @@ KeyPath::AppendStringWithValidation(const nsAString& aString) } nsresult -KeyPath::ExtractKey(JSContext* aCx, const JS::Value& aValue, Key& aKey) const +KeyPath::ExtractKey(JSContext* aCx, + const JS::Value& aValue, + Key& aKey, + bool aCallGetters) const { uint32_t len = mStrings.Length(); JS::Rooted<JS::Value> value(aCx); - aKey.Unset(); for (uint32_t i = 0; i < len; ++i) { @@ -388,7 +390,10 @@ KeyPath::ExtractKey(JSContext* aCx, const JS::Value& aValue, Key& aKey) const return rv; } - if (NS_FAILED(aKey.AppendItem(aCx, IsArray() && i == 0, value))) { + if (NS_FAILED(aKey.AppendItem(aCx, + IsArray() && i == 0, + value, + aCallGetters))) { NS_ASSERTION(aKey.IsUnset(), "Encoding error should unset"); return NS_ERROR_DOM_INDEXEDDB_DATA_ERR; } @@ -437,9 +442,12 @@ KeyPath::ExtractKeyAsJSVal(JSContext* aCx, const JS::Value& aValue, } nsresult -KeyPath::ExtractOrCreateKey(JSContext* aCx, const JS::Value& aValue, - Key& aKey, ExtractOrCreateKeyCallback aCallback, - void* aClosure) const +KeyPath::ExtractOrCreateKey(JSContext* aCx, + const JS::Value& aValue, + Key& aKey, + ExtractOrCreateKeyCallback aCallback, + void* aClosure, + bool aCallGetters) const { NS_ASSERTION(IsString(), "This doesn't make sense!"); @@ -455,7 +463,7 @@ KeyPath::ExtractOrCreateKey(JSContext* aCx, const JS::Value& aValue, return rv; } - if (NS_FAILED(aKey.AppendItem(aCx, false, value))) { + if (NS_FAILED(aKey.AppendItem(aCx, false, value, aCallGetters))) { NS_ASSERTION(aKey.IsUnset(), "Should be unset"); return value.isUndefined() ? NS_OK : NS_ERROR_DOM_INDEXEDDB_DATA_ERR; } |