fixed error handling in flash bank.
authoroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Tue, 19 Aug 2008 10:03:35 +0000 (10:03 +0000)
committeroharboe <oharboe@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Tue, 19 Aug 2008 10:03:35 +0000 (10:03 +0000)
git-svn-id: svn://svn.berlios.de/openocd/trunk@933 b42882b7-edfa-0310-969c-e2dbd0fdcd60

src/flash/flash.c

index 9178ff9c68a309ed371e9a4c30dca21ded4ccbd2..e5adcc861585cbee117e8d1f12c032b3fdf20029 100644 (file)
@@ -264,6 +264,7 @@ flash_bank_t *get_flash_bank_by_num(int num)
 
 int handle_flash_bank_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
 {
+       int retval;
        int i;
        int found = 0;
        target_t *target;
@@ -276,7 +277,7 @@ int handle_flash_bank_command(struct command_context_s *cmd_ctx, char *cmd, char
        if ((target = get_target_by_num(strtoul(args[5], NULL, 0))) == NULL)
        {
                LOG_ERROR("target %lu not defined", strtoul(args[5], NULL, 0));
-               return ERROR_OK;
+               return ERROR_FAIL;
        }
 
        for (i = 0; flash_drivers[i]; i++)
@@ -289,7 +290,7 @@ int handle_flash_bank_command(struct command_context_s *cmd_ctx, char *cmd, char
                        if (flash_drivers[i]->register_commands(cmd_ctx) != ERROR_OK)
                        {
                                LOG_ERROR("couldn't register '%s' commands", args[0]);
-                               exit(-1);
+                               return ERROR_FAIL;
                        }
 
                        c = malloc(sizeof(flash_bank_t));
@@ -304,11 +305,11 @@ int handle_flash_bank_command(struct command_context_s *cmd_ctx, char *cmd, char
                        c->sectors = NULL;
                        c->next = NULL;
 
-                       if (flash_drivers[i]->flash_bank_command(cmd_ctx, cmd, args, argc, c) != ERROR_OK)
+                       if ((retval=flash_drivers[i]->flash_bank_command(cmd_ctx, cmd, args, argc, c)) != ERROR_OK)
                        {
                                LOG_ERROR("'%s' driver rejected flash bank at 0x%8.8x", args[0], c->base);
                                free(c);
-                               return ERROR_OK;
+                               return retval;
                        }
 
                        /* put flash bank in linked list */
@@ -332,7 +333,7 @@ int handle_flash_bank_command(struct command_context_s *cmd_ctx, char *cmd, char
        if (!found)
        {
                LOG_ERROR("flash driver '%s' not found", args[0]);
-               exit(-1);
+               return ERROR_FAIL;
        }
 
        return ERROR_OK;