diff --git a/src/HDProtocolServer.c b/src/HDProtocolServer.c index f06b02d..62ea52b 100644 --- a/src/HDProtocolServer.c +++ b/src/HDProtocolServer.c @@ -38,7 +38,7 @@ static uint8_t IsOccupied(uint8_t currIndex, uint8_t protocol, uint8_t *occupied { if (currIndex >= OCCUPIED_MAX) { LogE("index[%d] out of range[%d]", currIndex, OCCUPIED_MAX); - return 0; + return 1; } for (int i = 0; i < OCCUPIED_MAX; ++i) { @@ -331,6 +331,11 @@ void HDProtocolRun() // 有之前的数据已经占用了, 并且检查是否超时 uint8_t occupiedIndex = OCCUPIED_MAX; if (IsOccupied(i, sInfo.info[i].supportProtocol, &occupiedIndex)) { + // 异常情况 + if (occupiedIndex >= OCCUPIED_MAX) { + continue; + } + // 解析被占用, 检查超时 if (HDLogGetTime() - sOccupiedInfo[occupiedIndex].occupyTime <= HDPROTOCOL_OCCUPY_TIMEOUT) { continue;