From 08607aefc0da2394bcce067989812081f742f5e2 Mon Sep 17 00:00:00 2001 From: Andrey Yurovsky Date: Thu, 30 Oct 2014 11:56:08 -0700 Subject: [PATCH] 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 --- src/flash/nor/at91samd.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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); -- 2.30.2