From ae13b02342ef56af0490f05e892b200f6080643a Mon Sep 17 00:00:00 2001 From: Mads Mogensen Date: Mon, 6 Nov 2017 22:30:37 +0100 Subject: [PATCH] Fix infinite loop (#346) * Fix infinite loop Fixed the findID function getting stuck in an infinite loop when scanning certain cards. Loop now stops at 255. --- examples/AccessControl/AccessControl.ino | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/AccessControl/AccessControl.ino b/examples/AccessControl/AccessControl.ino index 7d7aaaa..75b402e 100644 --- a/examples/AccessControl/AccessControl.ino +++ b/examples/AccessControl/AccessControl.ino @@ -27,8 +27,8 @@ | | | | | | | +----+ +----v------+ +--v---+ | +---------------> +-------+EXIT| |DELETE FROM| |ADD TO| | | - +----+ | EEPROM | |EEPROM| | | - +-----------+ +------+ +-------------------------------+ + +----+ | EEPROM | |EEPROM| | | + +-----------+ +------+ +-------------------------------+ Use a Master Card which is act as Programmer then you can able to choose card holders who will granted access or not @@ -460,7 +460,7 @@ uint8_t findIDSLOT( byte find[] ) { ///////////////////////////////////////// Find ID From EEPROM /////////////////////////////////// boolean findID( byte find[] ) { uint8_t count = EEPROM.read(0); // Read the first Byte of EEPROM that - for ( uint8_t i = 1; i <= count; i++ ) { // Loop once for each EEPROM entry + for ( uint8_t i = 1; i < count; i++ ) { // Loop once for each EEPROM entry readID(i); // Read an ID from EEPROM, it is stored in storedCard[4] if ( checkTwo( find, storedCard ) ) { // Check to see if the storedCard read from EEPROM return true;