From 1fa26c9addfa46d561bb3603a8d6acb2144f2fb9 Mon Sep 17 00:00:00 2001
From: bsd <bsd@81a1dc3b-b13d-400b-aceb-764788c761c2>
Date: Sat, 20 Jan 2001 15:38:55 +0000
Subject: [PATCH] Correct checksum calculation; failure to account for the
 value of the record type was causing non-zero record types to be calculated
 incorrectly.

git-svn-id: svn://svn.savannah.nongnu.org/avrdude/trunk/avrdude@43 81a1dc3b-b13d-400b-aceb-764788c761c2
---
 fileio.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/fileio.c b/fileio.c
index 7c35f4f5..79db1f05 100644
--- a/fileio.c
+++ b/fileio.c
@@ -125,7 +125,7 @@ int b2ihex ( unsigned char * inbuf, int bufsize,
   n = 0;
   nextaddr = 0;
   fprintf ( outf, ":%02X%04X01", n, nextaddr );
-  cksum += n + ((nextaddr >> 8) & 0x0ff) + (nextaddr & 0x0ff);
+  cksum += n + ((nextaddr >> 8) & 0x0ff) + (nextaddr & 0x0ff) + 1;
   cksum = -cksum;
   fprintf ( outf, "%02X\n", cksum );
 
@@ -175,7 +175,7 @@ int ihex2b ( char * infile, FILE * inf,
     }
 
     /* start computing a checksum */
-    cksum = n + ((nextaddr >> 8 ) & 0x0ff) + (nextaddr & 0x0ff);
+    cksum = n + ((nextaddr >> 8 ) & 0x0ff) + (nextaddr & 0x0ff) + rectype;
 
     for (i=0; i<n; i++) {
       if (sscanf((char *)&buffer[i*2+9], "%02x", &b) != 1) {