From e8df20d48092a1be82e41be9f3e2c8f8df4b2d98 Mon Sep 17 00:00:00 2001 From: Joerg Wunsch Date: Wed, 18 Sep 2013 05:54:37 +0000 Subject: [PATCH] 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. git-svn-id: svn://svn.savannah.nongnu.org/avrdude/trunk/avrdude@1242 81a1dc3b-b13d-400b-aceb-764788c761c2 --- ChangeLog | 7 +++++++ NEWS | 2 +- main.c | 3 ++- 3 files changed, 10 insertions(+), 2 deletions(-) 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 "