From 78cf92166ad4ab67e48e5dab7307bb1cf5a345b4 Mon Sep 17 00:00:00 2001
From: zwelch <zwelch@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Date: Thu, 11 Jun 2009 11:42:26 +0000
Subject: [PATCH] Simplify and fix handle_step_command: - Bug fix: return
 syntax error when more than one argument is given. - Eliminate redundant
 calls to step callback with addr temp variable. - Place variables at location
 of first use.

git-svn-id: svn://svn.berlios.de/openocd/trunk@2190 b42882b7-edfa-0310-969c-e2dbd0fdcd60
---
 src/target/target.c | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

diff --git a/src/target/target.c b/src/target/target.c
index a5447aa6c..6d4a93bcc 100644
--- a/src/target/target.c
+++ b/src/target/target.c
@@ -1950,17 +1950,20 @@ static int handle_resume_command(struct command_context_s *cmd_ctx, char *cmd, c
 
 static int handle_step_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
 {
-	target_t *target = get_current_target(cmd_ctx);
+	if (argc > 1)
+		return ERROR_COMMAND_SYNTAX_ERROR;
 
 	LOG_DEBUG("-");
 
-	if (argc == 0)
-		return target->type->step(target, 1, 0, 1); /* current pc, addr = 0, handle breakpoints */
-
+	/* with no args, step from current pc, addr = 0,
+	 * with one argument addr = args[0],
+	 * handle breakpoints, debugging */
+	u32 addr = 0;
 	if (argc == 1)
-		return target->type->step(target, 0, strtoul(args[0], NULL, 0), 1); /* addr = args[0], handle breakpoints */
+		addr = strtoul(args[0], NULL, 0);
 
-	return ERROR_OK;
+	target_t *target = get_current_target(cmd_ctx);
+	return target->type->step(target, 0, addr, 1);
 }
 
 static void handle_md_output(struct command_context_s *cmd_ctx,
-- 
GitLab