]> git.sur5r.net Git - openocd/commitdiff
xmc4xxx: Improve xmc4xxx_blank_check_memory() error handling
authorAndreas Färber <afaerber@suse.de>
Sun, 8 May 2016 14:48:50 +0000 (16:48 +0200)
committerFreddie Chopin <freddie.chopin@gmail.com>
Sat, 14 May 2016 10:54:10 +0000 (11:54 +0100)
Clean up working area in case writing fails. Probably inherited from
armv7m_blank_check_memory(). Fix adapted from armv7m_checksum_memory().

Change-Id: I784bef481d1eba833ab6a9c34249fe9d43a16081
Signed-off-by: Andreas Färber <afaerber@suse.de>
Reviewed-on: http://openocd.zylin.com/3470
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
src/flash/nor/xmc4xxx.c

index 31979302db0616b79d2c84ef74fd41441ec4721f..4fa273b004eaea6f885ebba1db8bec3dd88a132e 100644 (file)
@@ -640,7 +640,7 @@ static int xmc4xxx_blank_check_memory(struct target *target,
        retval = target_write_buffer(target, erase_check_algorithm->address,
                        sizeof(erase_check_code), (uint8_t *)erase_check_code);
        if (retval != ERROR_OK)
-               return retval;
+               goto cleanup;
 
        armv7m_info.common_magic = ARMV7M_COMMON_MAGIC;
        armv7m_info.core_mode = ARM_MODE_THREAD;
@@ -671,6 +671,7 @@ static int xmc4xxx_blank_check_memory(struct target *target,
        destroy_reg_param(&reg_params[1]);
        destroy_reg_param(&reg_params[2]);
 
+cleanup:
        target_free_working_area(target, erase_check_algorithm);
 
        return retval;