From 14dc22612b2997ab536b7f984a3174bb8847b4e8 Mon Sep 17 00:00:00 2001 From: oharboe Date: Mon, 14 Sep 2009 13:54:49 +0000 Subject: 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(+) (limited to 'src/helper/startup.tcl') diff --git a/src/helper/startup.tcl b/src/helper/startup.tcl index ba044be2..3eb7419f 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 -- cgit v1.2.3