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 /js | |
parent | 4266966eeef44dfce422b9703692e519678610c6 (diff) | |
download | uxp-4d4924e5105dbdfdcc3ff821671fba0dfeb11b11.tar.gz |
Fix a crash in IndexedDB.
Diffstat (limited to 'js')
-rw-r--r-- | js/src/jsapi.cpp | 22 | ||||
-rw-r--r-- | js/src/jsapi.h | 3 |
2 files changed, 25 insertions, 0 deletions
diff --git a/js/src/jsapi.cpp b/js/src/jsapi.cpp index 84a3155872..cad0840e03 100644 --- a/js/src/jsapi.cpp +++ b/js/src/jsapi.cpp @@ -2011,6 +2011,28 @@ JS_GetOwnUCPropertyDescriptor(JSContext* cx, HandleObject obj, const char16_t* n } JS_PUBLIC_API(bool) +JS_GetOwnElement(JSContext* cx, JS::HandleObject obj, uint32_t index, JS::MutableHandleValue vp) +{ + RootedId id(cx); + if (!IndexToId(cx, index, &id)) { + return false; + } + + Rooted<PropertyDescriptor> desc(cx); + if (!JS_GetOwnPropertyDescriptorById(cx, obj, id, &desc)) { + return false; + } + + if (desc.object() && desc.isDataDescriptor()) { + vp.set(desc.value()); + } else { + vp.setUndefined(); + } + + return true; +} + +JS_PUBLIC_API(bool) JS_GetPropertyDescriptorById(JSContext* cx, HandleObject obj, HandleId id, MutableHandle<PropertyDescriptor> desc) { diff --git a/js/src/jsapi.h b/js/src/jsapi.h index 67b3d42670..dc00c650d4 100644 --- a/js/src/jsapi.h +++ b/js/src/jsapi.h @@ -2922,6 +2922,9 @@ extern JS_PUBLIC_API(bool) JS_GetOwnUCPropertyDescriptor(JSContext* cx, JS::HandleObject obj, const char16_t* name, size_t namelen, JS::MutableHandle<JS::PropertyDescriptor> desc); +extern JS_PUBLIC_API(bool) +JS_GetOwnElement(JSContext* cx, JS::HandleObject obj, uint32_t index, JS::MutableHandleValue vp); + /** * Like JS_GetOwnPropertyDescriptorById, but also searches the prototype chain * if no own property is found directly on obj. The object on which the |