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
This commit is contained in:
Joerg Wunsch
2013-09-18 05:54:37 +00:00
parent 3b4dd795b2
commit e8df20d480
3 changed files with 10 additions and 2 deletions

3
main.c
View File

@@ -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 "