1
0
mirror of https://github.com/rkd77/elinks.git synced 2025-05-18 00:48:57 -04:00

[spidermonkey] DocumentFragment.insertBefore modified

This commit is contained in:
Witold Filipczyk 2024-09-16 17:22:50 +02:00
parent d8c60d4612
commit 9bff7dad40

View File

@ -1947,34 +1947,34 @@ fragment_insertBefore(JSContext *ctx, unsigned int argc, JS::Value *rval)
JS::RootedObject hobj(ctx, &args.thisv().toObject()); JS::RootedObject hobj(ctx, &args.thisv().toObject());
if (!JS_InstanceOf(ctx, hobj, &fragment_class, NULL)) { if (!JS_InstanceOf(ctx, hobj, &fragment_class, NULL)) {
args.rval().setBoolean(false); return false;
return true;
} }
dom_node *el = (dom_node *)JS::GetMaybePtrFromReservedSlot<dom_node>(hobj, 0); dom_node *el = (dom_node *)JS::GetMaybePtrFromReservedSlot<dom_node>(hobj, 0);
if (!el) { if (!el) {
args.rval().setUndefined(); return false;
return true;
} }
JS::RootedObject next_sibling1(ctx, &args[1].toObject()); dom_node *next_sibling = NULL;
JS::RootedObject child1(ctx, &args[0].toObject()); dom_node *child = NULL;
dom_node *next_sibling = (dom_node *)JS::GetMaybePtrFromReservedSlot<dom_node>(next_sibling1, 0); if (!args[1].isNull()) {
JS::RootedObject next_sibling1(ctx, &args[1].toObject());
if (!next_sibling) { next_sibling = (dom_node *)JS::GetMaybePtrFromReservedSlot<dom_node>(next_sibling1, 0);
args.rval().setNull();
return true;
} }
dom_node *child = (dom_node *)JS::GetMaybePtrFromReservedSlot<dom_node>(child1, 0); if (!args[0].isNull()) {
JS::RootedObject child1(ctx, &args[0].toObject());
child = (dom_node *)JS::GetMaybePtrFromReservedSlot<dom_node>(child1, 0);
}
dom_exception err; if (!child) {
dom_node *spare; return false;
}
dom_node *spare = NULL;
dom_exception err = dom_node_insert_before(el, child, next_sibling, &spare);
err = dom_node_insert_before(el, child, next_sibling, &spare); if (err != DOM_NO_ERR || !spare) {
if (err != DOM_NO_ERR) { return false;
args.rval().setUndefined();
return true;
} }
JSObject *obj = getElement(ctx, spare); JSObject *obj = getElement(ctx, spare);
dom_node_unref(spare); dom_node_unref(spare);