From 14dc22612b2997ab536b7f984a3174bb8847b4e8 Mon Sep 17 00:00:00 2001
From: oharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Date: Mon, 14 Sep 2009 13:54:49 +0000
Subject: [PATCH] error message upon recursive invocation of reset from reset
 event handlers

git-svn-id: svn://svn.berlios.de/openocd/trunk@2707 b42882b7-edfa-0310-969c-e2dbd0fdcd60
---
 src/helper/startup.tcl | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/src/helper/startup.tcl b/src/helper/startup.tcl
index ba044be28..3eb7419ff 100644
--- a/src/helper/startup.tcl
+++ b/src/helper/startup.tcl
@@ -134,7 +134,29 @@ proc ocd_gdb_restart {target_id} {
 	reset halt
 }
 
+global in_process_reset
+set in_process_reset 0
+
+# Catch reset recursion
 proc ocd_process_reset { MODE } {
+	global in_process_reset
+	if {$in_process_reset} {
+		set in_process_reset 0
+		return -code error "'reset' can not be invoked recursively"
+	}
+	
+	set in_process_reset 1
+	set success [expr [catch {ocd_process_reset_inner $MODE} result]==0] 
+	set in_process_reset 0
+	
+	if {$success} {
+		return $result
+	} else {
+		return -code error $result
+	}
+}
+
+proc ocd_process_reset_inner { MODE } {
 
 	# If this target must be halted...
 	set halt -1
-- 
GitLab