From 38cb629ddf2711f351bbec9d8cc60615dc654a56 Mon Sep 17 00:00:00 2001 From: Austin Morton Date: Sat, 2 May 2015 18:00:37 -0400 Subject: [PATCH] server: avoid the tcl server crashing when there is no target Since commit 1d0cf0df37a4e831ca3121ba8987d5848cad3e42 ("server: tcl_notifications command") connecting to the tcl server would terminate openocd. Fix this. Change-Id: I36e2a7482f7db3a30ff7e9f969c3b6cda9599382 Signed-off-by: Austin Morton Reviewed-on: http://openocd.zylin.com/2759 Tested-by: jenkins Reviewed-by: Forest Crossman Reviewed-by: Paul Fertser --- src/server/tcl_server.c | 2 +- src/target/target.c | 2 +- src/target/target.h | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/server/tcl_server.c b/src/server/tcl_server.c index d6828f12..65f71cc9 100644 --- a/src/server/tcl_server.c +++ b/src/server/tcl_server.c @@ -123,7 +123,7 @@ static int tcl_new_connection(struct connection *connection) memset(tclc, 0, sizeof(struct tcl_connection)); connection->priv = tclc; - struct target *target = get_current_target(connection->cmd_ctx); + struct target *target = get_target_by_num(connection->cmd_ctx->current_target); if (target != NULL) tclc->tc_laststate = target->state; diff --git a/src/target/target.c b/src/target/target.c index 27f8839f..4ea445fe 100644 --- a/src/target/target.c +++ b/src/target/target.c @@ -486,7 +486,7 @@ struct target *get_target(const char *id) } /* returns a pointer to the n-th configured target */ -static struct target *get_target_by_num(int num) +struct target *get_target_by_num(int num) { struct target *target = all_targets; diff --git a/src/target/target.h b/src/target/target.h index 9382720b..7471c1b3 100644 --- a/src/target/target.h +++ b/src/target/target.h @@ -356,6 +356,7 @@ int target_call_timer_callbacks(void); */ int target_call_timer_callbacks_now(void); +struct target *get_target_by_num(int num); struct target *get_current_target(struct command_context *cmd_ctx); struct target *get_target(const char *id); -- 2.39.5