mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-04 23:08:39 +09:00
Fix a crash in IndexedDB.
This commit is contained in:
parent
f40a82f098
commit
cfc50f18c4
10 changed files with 102 additions and 39 deletions
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue