From: Andrey Yurovsky Date: Thu, 30 Oct 2014 18:56:08 +0000 (-0700) Subject: flash: at91samd: fix use of is_erased in check X-Git-Tag: v0.9.0-rc1~229 X-Git-Url: https://review.openocd.org/gitweb?p=openocd.git;a=commitdiff_plain;h=08607aefc0da2394bcce067989812081f742f5e2 flash: at91samd: fix use of is_erased in check is_erased can be one of -1, 0, or 1 so it must not be checked like a boolean value. In this case we want to erase a page unless we know it's already erased so we just check for is_erased != 1. Thanks to Jim Paris for pointing this out on another driver. Change-Id: I4591186228153b64e5a9608a2aac18745e578d4a Signed-off-by: Andrey Yurovsky Reviewed-on: http://openocd.zylin.com/2368 Tested-by: jenkins Reviewed-by: Spencer Oliver --- diff --git a/src/flash/nor/at91samd.c b/src/flash/nor/at91samd.c index 7c877c0ff8..ece1fd20f6 100644 --- a/src/flash/nor/at91samd.c +++ b/src/flash/nor/at91samd.c @@ -590,7 +590,7 @@ static int samd_erase(struct flash_bank *bank, int first, int last) return ERROR_FLASH_OPERATION_FAILED; } - if (!bank->sectors[s].is_erased) { + if (bank->sectors[s].is_erased != 1) { /* For each row in that sector */ for (int r = s * rows_in_sector; r < (s + 1) * rows_in_sector; r++) { res = samd_erase_row(bank->target, r * chip->page_size * 4);