From 8cd921832ecec3c850b60d7666e7c3f966094a51 Mon Sep 17 00:00:00 2001
From: Arkerthan <arkerthan@gmail.com>
Date: Sat, 16 May 2020 14:46:21 +0200
Subject: [PATCH] Add stacktrace to <<includeDOM>>

---
 src/js/utilsDOM.js | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/src/js/utilsDOM.js b/src/js/utilsDOM.js
index 63dcc310b6c..973904c28d1 100644
--- a/src/js/utilsDOM.js
+++ b/src/js/utilsDOM.js
@@ -363,8 +363,13 @@ App.UI.DOM.generateLinksStrip = function(links) {
  */
 Macro.add("includeDOM", {
 	handler() {
-		// When given a function that expects a specific context (eg, called like "foo.bar()"), SC will screw it up and
-		// execute it in a different context. Putting the expanded argument through eval retains the context.
-		this.output.append(eval(this.args.full));
+		// Basically the same as <<set>>, we just use whatever Scripting.evalJavaScript(this.args.full) returns instead
+		// of discarding it.
+		try {
+			this.output.append(Scripting.evalJavaScript(this.args.full));
+		} catch (ex) {
+			return this.error(`bad evaluation: ${typeof ex === 'object' ? `${ex.name}: ${ex.message}` : ex}`, null,
+				ex.stack);
+		}
 	}
 });
-- 
GitLab