From 583aec98f07defd7f6090d58cd54d59c2e197632 Mon Sep 17 00:00:00 2001 From: Witold Filipczyk Date: Tue, 20 Dec 2022 18:03:32 +0100 Subject: [PATCH] [document] Try to pass element_offset --- src/ecmascript/ecmascript.cpp | 5 +++-- src/ecmascript/ecmascript.h | 1 + src/ecmascript/spidermonkey/document.cpp | 1 + 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/ecmascript/ecmascript.cpp b/src/ecmascript/ecmascript.cpp index 18464f8fb..6d98b9266 100644 --- a/src/ecmascript/ecmascript.cpp +++ b/src/ecmascript/ecmascript.cpp @@ -373,12 +373,12 @@ check_for_rerender(struct ecmascript_interpreter *interpreter, const char* text) struct cache_entry *cached = document->cached; if (!strcmp(text, "eval")) { - if (interpreter->element_offset) { + if (interpreter->write_element_offset) { if (interpreter->writecode.length) { std::map *mapa = (std::map *)document->element_map; if (mapa) { - auto element = (*mapa).find(interpreter->element_offset); + auto element = (*mapa).find(interpreter->write_element_offset); if (element != (*mapa).end()) { xmlpp::Element *el = element->second; @@ -408,6 +408,7 @@ check_for_rerender(struct ecmascript_interpreter *interpreter, const char* text) } } } + interpreter->write_element_offset = 0; } else { if (interpreter->writecode.length) { fromstart: diff --git a/src/ecmascript/ecmascript.h b/src/ecmascript/ecmascript.h index 2c4d06fd5..3aae9caca 100644 --- a/src/ecmascript/ecmascript.h +++ b/src/ecmascript/ecmascript.h @@ -110,6 +110,7 @@ struct ecmascript_interpreter { #endif bool changed; int element_offset; + int write_element_offset; }; struct ecmascript_timeout { diff --git a/src/ecmascript/spidermonkey/document.cpp b/src/ecmascript/spidermonkey/document.cpp index 9d47edab7..bd2dea5e7 100644 --- a/src/ecmascript/spidermonkey/document.cpp +++ b/src/ecmascript/spidermonkey/document.cpp @@ -1307,6 +1307,7 @@ document_write_do(JSContext *ctx, unsigned int argc, JS::Value *rval, int newlin if (argc >= 1) { + interpreter->write_element_offset = interpreter->element_offset; for (unsigned int i = 0; i < argc; ++i) { char *str = jsval_to_string(ctx, args[i]);