diff --git a/src/ecmascript/spidermonkey/element.cpp b/src/ecmascript/spidermonkey/element.cpp index b7f8e329..b8793a5f 100644 --- a/src/ecmascript/spidermonkey/element.cpp +++ b/src/ecmascript/spidermonkey/element.cpp @@ -217,10 +217,13 @@ static void element_finalize(JS::GCContext *op, JSObject *obj) mem_free(el_private); JS::SetReservedSlot(obj, 1, JS::UndefinedValue()); - dom_node_unref(el); - JS::SetReservedSlot(obj, 0, JS::UndefinedValue()); } } + + if (el) { + dom_node_unref(el); + JS::SetReservedSlot(obj, 0, JS::UndefinedValue()); + } } static bool @@ -5247,6 +5250,8 @@ getElement(JSContext *ctx, void *node) el_private->thisval = r_el; map_privates[node] = el_private; + dom_node_ref((dom_node *)node); + return el; }