diff options
author | Austin Morton <austinpmorton@gmail.com> | 2015-05-02 18:00:37 -0400 |
---|---|---|
committer | Paul Fertser <fercerpav@gmail.com> | 2015-05-17 21:17:02 +0100 |
commit | 38cb629ddf2711f351bbec9d8cc60615dc654a56 (patch) | |
tree | b5e361d6f7846a44a6b91dff7462156f236b44cf /src | |
parent | 8de17eb65aef93d8cf379f750777d3163efdf68a (diff) | |
download | riscv-openocd-38cb629ddf2711f351bbec9d8cc60615dc654a56.zip riscv-openocd-38cb629ddf2711f351bbec9d8cc60615dc654a56.tar.gz riscv-openocd-38cb629ddf2711f351bbec9d8cc60615dc654a56.tar.bz2 |
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 <austinpmorton@gmail.com>
Reviewed-on: http://openocd.zylin.com/2759
Tested-by: jenkins
Reviewed-by: Forest Crossman <cyrozap@gmail.com>
Reviewed-by: Paul Fertser <fercerpav@gmail.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/server/tcl_server.c | 2 | ||||
-rw-r--r-- | src/target/target.c | 2 | ||||
-rw-r--r-- | 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 d6828f1..65f71cc 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 27f8839..4ea445f 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 9382720..7471c1b 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); |