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/IDBObjectStore.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/IDBObjectStore.cpp')
-rw-r--r-- | dom/indexedDB/IDBObjectStore.cpp | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/dom/indexedDB/IDBObjectStore.cpp b/dom/indexedDB/IDBObjectStore.cpp index 756792741..f86c619a7 100644 --- a/dom/indexedDB/IDBObjectStore.cpp +++ b/dom/indexedDB/IDBObjectStore.cpp @@ -1084,7 +1084,7 @@ IDBObjectStore::AppendIndexUpdateInfo( if (!aMultiEntry) { Key key; - rv = aKeyPath.ExtractKey(aCx, aVal, key); + rv = aKeyPath.ExtractKey(aCx, aVal, key, /* aCallGetters */ false); // If an index's keyPath doesn't match an object, we ignore that object. if (rv == NS_ERROR_DOM_INDEXEDDB_DATA_ERR || key.IsUnset()) { @@ -1128,13 +1128,13 @@ IDBObjectStore::AppendIndexUpdateInfo( for (uint32_t arrayIndex = 0; arrayIndex < arrayLength; arrayIndex++) { JS::Rooted<JS::Value> arrayItem(aCx); - if (NS_WARN_IF(!JS_GetElement(aCx, array, arrayIndex, &arrayItem))) { + if (NS_WARN_IF(!JS_GetOwnElement(aCx, array, arrayIndex, &arrayItem))) { IDB_REPORT_INTERNAL_ERR(); return NS_ERROR_DOM_INDEXEDDB_UNKNOWN_ERR; } Key value; - if (NS_FAILED(value.SetFromJSVal(aCx, arrayItem)) || + if (NS_FAILED(value.SetFromJSVal(aCx, arrayItem, /* aCallGetters */ false)) || value.IsUnset()) { // Not a value we can do anything with, ignore it. continue; @@ -1153,7 +1153,7 @@ IDBObjectStore::AppendIndexUpdateInfo( } else { Key value; - if (NS_FAILED(value.SetFromJSVal(aCx, val)) || + if (NS_FAILED(value.SetFromJSVal(aCx, val, /* aCallGetters */ false)) || value.IsUnset()) { // Not a value we can do anything with, ignore it. return NS_OK; @@ -1324,12 +1324,12 @@ IDBObjectStore::GetAddInfo(JSContext* aCx, if (!HasValidKeyPath()) { // Out-of-line keys must be passed in. - rv = aKey.SetFromJSVal(aCx, aKeyVal); + rv = aKey.SetFromJSVal(aCx, aKeyVal, /* aCallGetters */ true); if (NS_FAILED(rv)) { return rv; } } else if (!isAutoIncrement) { - rv = GetKeyPath().ExtractKey(aCx, aValue, aKey); + rv = GetKeyPath().ExtractKey(aCx, aValue, aKey, /* aCallGetters */ false); if (NS_FAILED(rv)) { return rv; } @@ -1368,7 +1368,8 @@ IDBObjectStore::GetAddInfo(JSContext* aCx, aValue, aKey, &GetAddInfoCallback, - &data); + &data, + /* aCallGetters */ false); } else { rv = GetAddInfoCallback(aCx, &data); } |