]> git.sur5r.net Git - openocd/commitdiff
Simplify and fix handle_step_command:
authorzwelch <zwelch@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Thu, 11 Jun 2009 11:42:26 +0000 (11:42 +0000)
committerzwelch <zwelch@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Thu, 11 Jun 2009 11:42:26 +0000 (11:42 +0000)
- 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

index a5447aa6cc7c75dfbd35e080543c7c4df49f54fd..6d4a93bccade1271de1e458093042b438471242a 100644 (file)
@@ -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,