diff --git a/ChangeLog b/ChangeLog index cfa6e9af..931c05f0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2006-12-11 Joerg Wunsch + + * avr.c: Fix a bug introduced in rev. 1.69, when implementing the + fallback from each programmer's paged_load() or paged_write() + method, respectively. The return value needs to be checked for + being greater or equal than 0 rather equal to 0 in order to + assume the operation has been successful. + Fixes bug #18489: avrdude is too slow (20 byte/s) + 2006-12-11 Joerg Wunsch * avr910.c: Make the code compile warning-free: diff --git a/avr.c b/avr.c index 4a692632..6f75ca6c 100644 --- a/avr.c +++ b/avr.c @@ -183,7 +183,7 @@ int avr_read(PROGRAMMER * pgm, AVRPART * p, char * memtype, int size, * instead */ rc = pgm->paged_load(pgm, p, mem, mem->page_size, size); - if (rc == 0) { + if (rc >= 0) { if (strcasecmp(mem->desc, "flash") == 0) return avr_mem_hiaddr(mem); else @@ -579,7 +579,7 @@ int avr_write(PROGRAMMER * pgm, AVRPART * p, char * memtype, int size, * efficiently than we can read it directly, so use its routine * instead */ - if (pgm->paged_write(pgm, p, m, m->page_size, size) == 0) + if (pgm->paged_write(pgm, p, m, m->page_size, size) >= 0) return 0; } }