diff --git a/workers/hex_parser.js b/workers/hex_parser.js index 898b347a..35edfbd0 100644 --- a/workers/hex_parser.js +++ b/workers/hex_parser.js @@ -28,27 +28,25 @@ function read_hex_file(data) { switch (record_type) { case 0x00: // data record - if (byte_count > 0) { - var crc = byte_count + parseInt(address.substr(0, 2), 16) + parseInt(address.substr(2, 2), 16) + record_type; - for (var needle = 0; needle < byte_count * 2; needle += 2) { - var num = parseInt(content.substr(needle, 2), 16); // get one byte in hex and convert it to decimal - result.data.push(num); - - crc += num; - result.bytes++; - } + var crc = byte_count + parseInt(address.substr(0, 2), 16) + parseInt(address.substr(2, 2), 16) + record_type; + for (var needle = 0; needle < byte_count * 2; needle += 2) { + var num = parseInt(content.substr(needle, 2), 16); // get one byte in hex and convert it to decimal + result.data.push(num); - // change crc to 2's complement (same as checksum) - crc = ~crc + 1; - crc &= 0xFF; + crc += num; + result.bytes++; + } + + // change crc to 2's complement (same as checksum) + crc = ~crc + 1; + crc &= 0xFF; + + // verify + if (crc != checksum) { + hexfile_valid = false; - // verify - if (crc != checksum) { - hexfile_valid = false; - - // break out of the for loop as crc is wrong anyway, we dont need to process any more data - i = data.length; - } + // break out of the for loop as crc is wrong anyway, we dont need to process any more data + i = data.length; } break; case 0x01: // end of file record