aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAustin Morton <austinpmorton@gmail.com>2015-05-02 18:00:37 -0400
committerPaul Fertser <fercerpav@gmail.com>2015-05-17 21:17:02 +0100
commit38cb629ddf2711f351bbec9d8cc60615dc654a56 (patch)
treeb5e361d6f7846a44a6b91dff7462156f236b44cf /src
parent8de17eb65aef93d8cf379f750777d3163efdf68a (diff)
downloadriscv-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.c2
-rw-r--r--src/target/target.c2
-rw-r--r--src/target/target.h1
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);