From 815c8f684bd51c74c5a561b61bd5b56eaa323e04 Mon Sep 17 00:00:00 2001 From: Witold Filipczyk Date: Sat, 6 Jul 2024 10:26:57 +0200 Subject: [PATCH] [spidermonkey] Fixes in element.remove() --- src/ecmascript/spidermonkey/domparser.cpp | 10 +++++++++- src/ecmascript/spidermonkey/element.cpp | 4 +++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/ecmascript/spidermonkey/domparser.cpp b/src/ecmascript/spidermonkey/domparser.cpp index 01600275..a8c2f025 100644 --- a/src/ecmascript/spidermonkey/domparser.cpp +++ b/src/ecmascript/spidermonkey/domparser.cpp @@ -147,5 +147,13 @@ domparser_parseFromString(JSContext *ctx, unsigned int argc, JS::Value *vp) args.rval().setNull(); return true; } - return getDocument(ctx, doc); + JSObject *obj = getDocument(ctx, doc); + + if (!obj) { + args.rval().setNull(); + return true; + } + args.rval().setObject(*obj); + + return true; } diff --git a/src/ecmascript/spidermonkey/element.cpp b/src/ecmascript/spidermonkey/element.cpp index 03cc80bf..052c6362 100644 --- a/src/ecmascript/spidermonkey/element.cpp +++ b/src/ecmascript/spidermonkey/element.cpp @@ -5144,10 +5144,12 @@ element_remove(JSContext *ctx, unsigned int argc, JS::Value *rval) if (exc != DOM_NO_ERR || !parent) { return true; } - exc = dom_node_remove_child(parent, el, NULL); + dom_node *res = NULL; + exc = dom_node_remove_child(parent, el, &res); dom_node_unref(parent); if (exc == DOM_NO_ERR) { + dom_node_unref(res); interpreter->changed = 1; }