From 38e5aa33ea6952182f3d36dfe4fbf17db5a7cc62 Mon Sep 17 00:00:00 2001
From: Joerg Wunsch <j@uriah.heep.sax.de>
Date: Sun, 27 Jun 2021 20:26:05 +0000
Subject: [PATCH] bug #60753: Patch #1436 breaks multiple programmer/device
 combinations on MacOS BigSur * avr.c: compare page_size > 1 instead of != 0 *
 stk500v2.c: (Ditto.)

git-svn-id: svn://svn.savannah.nongnu.org/avrdude/trunk/avrdude@1452 81a1dc3b-b13d-400b-aceb-764788c761c2
---
 ChangeLog  |  5 +++++
 NEWS       |  1 +
 avr.c      |  8 ++++----
 stk500v2.c | 14 +++++++-------
 4 files changed, 17 insertions(+), 11 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index e69de29b..feea3994 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -0,0 +1,5 @@
+2021-06-27  Joerg Wunsch <j.gnu@uriah.heep.sax.de>
+
+	bug #60753: Patch #1436 breaks multiple programmer/device combinations on MacOS BigSur
+	* avr.c: compare page_size > 1 instead of != 0
+	* stk500v2.c: (Ditto.)
diff --git a/NEWS b/NEWS
index c3d58158..6cdbabf5 100644
--- a/NEWS
+++ b/NEWS
@@ -50,6 +50,7 @@ Current:
     bug #57428: document when 'arduino' or 'wiring' should be used, and -D requirement of latter
     bug #58095: error setting efuse on atmega328pb variant
     no-id: efuse section on ATmega32M1 lacks 'size'
+    bug #60753: Patch #1436 breaks multiple programmer/device combinations on MacOS BigSur
 
   * Patches:
     patch #9482: Add support for UPDI and AVR8X
diff --git a/avr.c b/avr.c
index 47d5ab05..0f2ae79a 100644
--- a/avr.c
+++ b/avr.c
@@ -330,7 +330,7 @@ int avr_read(PROGRAMMER * pgm, AVRPART * p, char * memtype,
   memset(mem->buf, 0xff, mem->size);
 
   /* supports "paged load" thru post-increment */
-  if ((p->flags & AVRPART_HAS_TPI) && mem->page_size != 0 &&
+  if ((p->flags & AVRPART_HAS_TPI) && mem->page_size > 1 &&
       pgm->cmd_tpi != NULL) {
 
     while (avr_tpi_poll_nvmbsy(pgm));
@@ -361,7 +361,7 @@ int avr_read(PROGRAMMER * pgm, AVRPART * p, char * memtype,
     return avr_mem_hiaddr(mem);
   }
 
-  if (pgm->paged_load != NULL && mem->page_size != 0) {
+  if (pgm->paged_load != NULL && mem->page_size > 1) {
     /*
      * the programmer supports a paged mode read
      */
@@ -863,7 +863,7 @@ int avr_write(PROGRAMMER * pgm, AVRPART * p, char * memtype, int size,
   }
 
 
-  if ((p->flags & AVRPART_HAS_TPI) && m->page_size != 0 &&
+  if ((p->flags & AVRPART_HAS_TPI) && m->page_size > 1 &&
       pgm->cmd_tpi != NULL) {
 
     while (avr_tpi_poll_nvmbsy(pgm));
@@ -903,7 +903,7 @@ int avr_write(PROGRAMMER * pgm, AVRPART * p, char * memtype, int size,
     return i;
   }
 
-  if (pgm->paged_write != NULL && m->page_size != 0) {
+  if (pgm->paged_write != NULL && m->page_size > 1) {
     /*
      * the programmer supports a paged mode write
      */
diff --git a/stk500v2.c b/stk500v2.c
index 74579413..90c2fa24 100644
--- a/stk500v2.c
+++ b/stk500v2.c
@@ -1290,14 +1290,14 @@ static int stk500v2_initialize(PROGRAMMER * pgm, AVRPART * p)
   for (ln = lfirst(p->mem); ln; ln = lnext(ln)) {
     m = ldata(ln);
     if (strcmp(m->desc, "flash") == 0) {
-      if (m->page_size > 0) {
+      if (m->page_size > 1) {
         if (m->page_size > 256)
           PDATA(pgm)->flash_pagesize = 256;
         else
           PDATA(pgm)->flash_pagesize = m->page_size;
       }
     } else if (strcmp(m->desc, "eeprom") == 0) {
-      if (m->page_size > 0)
+      if (m->page_size > 1)
 	PDATA(pgm)->eeprom_pagesize = m->page_size;
     }
   }
@@ -1389,14 +1389,14 @@ static int stk500v2_jtag3_initialize(PROGRAMMER * pgm, AVRPART * p)
   for (ln = lfirst(p->mem); ln; ln = lnext(ln)) {
     m = ldata(ln);
     if (strcmp(m->desc, "flash") == 0) {
-      if (m->page_size > 0) {
+      if (m->page_size > 1) {
         if (m->page_size > 256)
           PDATA(pgm)->flash_pagesize = 256;
         else
           PDATA(pgm)->flash_pagesize = m->page_size;
       }
     } else if (strcmp(m->desc, "eeprom") == 0) {
-      if (m->page_size > 0)
+      if (m->page_size > 1)
 	PDATA(pgm)->eeprom_pagesize = m->page_size;
     }
   }
@@ -1460,14 +1460,14 @@ static int stk500hv_initialize(PROGRAMMER * pgm, AVRPART * p, enum hvmode mode)
   for (ln = lfirst(p->mem); ln; ln = lnext(ln)) {
     m = ldata(ln);
     if (strcmp(m->desc, "flash") == 0) {
-      if (m->page_size > 0) {
+      if (m->page_size > 1) {
         if (m->page_size > 256)
           PDATA(pgm)->flash_pagesize = 256;
         else
           PDATA(pgm)->flash_pagesize = m->page_size;
       }
     } else if (strcmp(m->desc, "eeprom") == 0) {
-      if (m->page_size > 0)
+      if (m->page_size > 1)
 	PDATA(pgm)->eeprom_pagesize = m->page_size;
     }
   }
@@ -3731,7 +3731,7 @@ static int stk600_xprog_program_enable(PROGRAMMER * pgm, AVRPART * p)
             return -1;
         }
         if ((mem = avr_locate_mem(p, "eeprom")) != NULL) {
-            if (mem->page_size == 0) {
+            if (mem->page_size <= 1) {
                 avrdude_message(MSG_INFO, "%s: stk600_xprog_program_enable(): no EEPROM page_size parameter for PDI device\n",
                                 progname);
                 return -1;