diff --git a/ChangeLog b/ChangeLog index 9f709010..e44602e7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2013-09-17 Joerg Wunsch + + bug #40055: AVRDUDE segfaults when writing eeprom + * main.c: Always clear the UF_AUTO_ERASE flag if either a + non-Xmega device was found, or the programmer does not offer a + page_erase method. + 2013-09-17 Joerg Wunsch * configure.ac (AC_INIT): Bump version to post-6.0. diff --git a/NEWS b/NEWS index 387578bc..340d3bb4 100644 --- a/NEWS +++ b/NEWS @@ -17,7 +17,7 @@ Current: - ... * Bugfixes - - bug #XXXX: xxx + - bug #40055: AVRDUDE segfaults when writing eeprom - patch #XXXX: xxx * Internals: diff --git a/main.c b/main.c index c4c6d58d..39794867 100644 --- a/main.c +++ b/main.c @@ -1156,6 +1156,8 @@ int main(int argc, char * argv []) } else { AVRMEM * m; const char *memname = (p->flags & AVRPART_HAS_PDI)? "application": "flash"; + + uflags &= ~UF_AUTO_ERASE; for (ln=lfirst(updates); ln; ln=lnext(ln)) { upd = ldata(ln); m = avr_locate_mem(p, upd->memtype); @@ -1163,7 +1165,6 @@ int main(int argc, char * argv []) continue; if ((strcasecmp(m->desc, memname) == 0) && (upd->op == DEVICE_WRITE)) { erase = 1; - uflags &= ~UF_AUTO_ERASE; if (quell_progress < 2) { fprintf(stderr, "%s: NOTE: \"%s\" memory has been specified, an erase cycle "