From c408603c36b5359982cd8fdc5556d77a54ac5190 Mon Sep 17 00:00:00 2001
From: deuce <>
Date: Fri, 29 Jul 2016 08:11:39 +0000
Subject: [PATCH] Add support for a HandlerArg string to be passed to a
 handler. Run the handler in a try/catch and log exceptions.

---
 exec/tickit.js | 19 +++++++++++++++----
 1 file changed, 15 insertions(+), 4 deletions(-)

diff --git a/exec/tickit.js b/exec/tickit.js
index bd4fc0df11..7f707f8b25 100644
--- a/exec/tickit.js
+++ b/exec/tickit.js
@@ -125,13 +125,16 @@ function process_tic(tic)
 	var i,j;
 	var cfg;
 	var handler;
+	var handler_arg;
 
 	if (tickit.gcfg.path !== undefined)
 		path = backslash(tickit.gcfg.path);
 	if (tickit.gcfg.dir !== undefined)
 		dir = tickit.gcfg.dir.toLowerCase();
-	if (tickit.gcfg.handler !== undefined)
+	if (tickit.gcfg.handler !== undefined) {
 		handler = tickit.gcfg.handler;
+		handler_arg = tickit.gcfg.handlerarg;
+	}
 
 	cfg = tickit.acfg[tic.area.toLowerCase()];
 	if (cfg !== undefined) {
@@ -144,13 +147,21 @@ function process_tic(tic)
 			if (cfg.path === undefined)
 				path = undefined;
 		}
-		if (cfg.handler !== undefined)
+		if (cfg.handler !== undefined) {
 			handler = cfg.handler;
+			handler_arg = cfg.handlerarg;
+		}
 	}
 
 	if (handler !== undefined) {
-		if (handler.Handle_TIC(tic, this))
-			return true;
+		try {
+			if (handler.Handle_TIC(tic, this, handler_arg))
+				return true;
+		}
+		catch (e) {
+			log(LOG_ERROR, "TICK Handler threw an exception: "+e);
+		}
+		return false;
 	}
 
 	if (dir !== undefined) {
-- 
GitLab