From 24f845cdd8efd8f66d5ecbc82431a7029cfedea9 Mon Sep 17 00:00:00 2001 From: Stefan Rueger Date: Thu, 1 Jun 2023 21:46:09 +0100 Subject: [PATCH] Guard pgm->page_erase() from being called when unset --- src/avr.c | 2 +- src/avrcache.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/avr.c b/src/avr.c index 15067cef..14e3076a 100644 --- a/src/avr.c +++ b/src/avr.c @@ -1054,7 +1054,7 @@ int avr_write_mem(const PROGRAMMER *pgm, const AVRPART *p, const AVRMEM *m, int if (need_write) { rc = 0; - if (auto_erase) + if (auto_erase && pgm->page_erase) rc = pgm->page_erase(pgm, p, cm, pageaddr); if (rc >= 0) rc = pgm->paged_write(pgm, p, cm, cm->page_size, pageaddr, cm->page_size); diff --git a/src/avrcache.c b/src/avrcache.c index da40c7a7..b0cb51da 100644 --- a/src/avrcache.c +++ b/src/avrcache.c @@ -549,7 +549,7 @@ int avr_flush_cache(const PROGRAMMER *pgm, const AVRPART *p) { for(int iwr = 0, pgno = 0, n = 0; n < cp->size; pgno++, n += cp->page_size) { if(cp->iscached[pgno] && memcmp(cp->copy + n, cp->cont + n, cp->page_size)) { - if(!chiperase && mems[i].pgerase) + if(!chiperase && mems[i].pgerase && pgm->page_erase) pgm->page_erase(pgm, p, mem, n); if(writeCachePage(cp, pgm, p, mem, n, 1) < 0) return LIBAVRDUDE_GENERAL_FAILURE;