1
0
mirror of https://github.com/rkd77/elinks.git synced 2025-02-02 15:09:23 -05:00

[spidermonkey] Check NULL in appendChild

This commit is contained in:
Witold Filipczyk 2024-09-17 12:50:36 +02:00
parent b55792f3ed
commit eba068ba2a
3 changed files with 39 additions and 32 deletions

View File

@ -3975,21 +3975,25 @@ element_appendChild(JSContext *ctx, unsigned int argc, JS::Value *rval)
}
dom_node *el = (dom_node *)JS::GetMaybePtrFromReservedSlot<dom_node>(hobj, 0);
dom_node *res = NULL;
dom_exception exc;
if (argc != 1) {
args.rval().setNull();
return true;
return false;
}
if (!el) {
args.rval().setNull();
return true;
return false;
}
JS::RootedObject node(ctx, &args[0].toObject());
dom_node *el2 = NULL;
dom_node *el2 = (dom_node *)JS::GetMaybePtrFromReservedSlot<dom_node>(node, 0);
exc = dom_node_append_child(el, el2, &res);
if (!args[0].isNull()) {
JS::RootedObject node(ctx, &args[0].toObject());
el2 = (dom_node *)JS::GetMaybePtrFromReservedSlot<dom_node>(node, 0);
}
if (!el2) {
return false;
}
dom_exception exc = dom_node_append_child(el, el2, &res);
if (exc == DOM_NO_ERR && res) {
interpreter->changed = 1;
@ -3999,9 +4003,8 @@ element_appendChild(JSContext *ctx, unsigned int argc, JS::Value *rval)
debug_dump_xhtml(document->dom);
return true;
}
args.rval().setNull();
return true;
return false;
}
/* @element_funcs{"blur"} */

View File

@ -1709,24 +1709,27 @@ fragment_appendChild(JSContext *ctx, unsigned int argc, JS::Value *rval)
#endif
return false;
}
dom_node *el = (dom_node *)JS::GetMaybePtrFromReservedSlot<dom_node>(hobj, 0);
dom_node *res = NULL;
dom_exception exc;
if (argc != 1) {
args.rval().setNull();
return true;
return false;
}
if (!el) {
args.rval().setNull();
return true;
return false;
}
JS::RootedObject node(ctx, &args[0].toObject());
dom_node *el2 = NULL;
dom_node *el2 = (dom_node *)JS::GetMaybePtrFromReservedSlot<dom_node>(node, 0);
exc = dom_node_append_child(el, el2, &res);
if (!args[0].isNull()) {
JS::RootedObject node(ctx, &args[0].toObject());
el2 = (dom_node *)JS::GetMaybePtrFromReservedSlot<dom_node>(node, 0);
}
if (!el2) {
return false;
}
dom_exception exc = dom_node_append_child(el, el2, &res);
if (exc == DOM_NO_ERR && res) {
interpreter->changed = 1;
@ -1736,9 +1739,8 @@ fragment_appendChild(JSContext *ctx, unsigned int argc, JS::Value *rval)
debug_dump_xhtml(document->dom);
return true;
}
args.rval().setNull();
return true;
return false;
}

View File

@ -1773,24 +1773,27 @@ text_appendChild(JSContext *ctx, unsigned int argc, JS::Value *rval)
#endif
return false;
}
dom_node *el = (dom_node *)JS::GetMaybePtrFromReservedSlot<dom_node>(hobj, 0);
dom_node *res = NULL;
dom_exception exc;
if (argc != 1) {
args.rval().setNull();
return true;
return false;
}
if (!el) {
args.rval().setNull();
return true;
return false;
}
JS::RootedObject node(ctx, &args[0].toObject());
dom_node *el2 = NULL;
dom_node *el2 = (dom_node *)JS::GetMaybePtrFromReservedSlot<dom_node>(node, 0);
exc = dom_node_append_child(el, el2, &res);
if (!args[0].isNull()) {
JS::RootedObject node(ctx, &args[0].toObject());
el2 = (dom_node *)JS::GetMaybePtrFromReservedSlot<dom_node>(node, 0);
}
if (!el2) {
return false;
}
dom_exception exc = dom_node_append_child(el, el2, &res);
if (exc == DOM_NO_ERR && res) {
interpreter->changed = 1;
@ -1800,9 +1803,8 @@ text_appendChild(JSContext *ctx, unsigned int argc, JS::Value *rval)
debug_dump_xhtml(document->dom);
return true;
}
args.rval().setNull();
return true;
return false;
}