Explorar o código

[FL-1746] Fix IRDA freeze (#673)

Reading large RAW signal causes freeze

Co-authored-by: あく <alleteam@gmail.com>
Albert Kharisov %!s(int64=4) %!d(string=hai) anos
pai
achega
c3a1836fcd
Modificáronse 1 ficheiros con 1 adicións e 1 borrados
  1. 1 1
      lib/irda/encoder_decoder/common/irda_common_decoder.c

+ 1 - 1
lib/irda/encoder_decoder/common/irda_common_decoder.c

@@ -257,7 +257,7 @@ void irda_common_decoder_reset_state(IrdaCommonDecoder* common_decoder) {
     common_decoder->databit_cnt = 0;
     common_decoder->switch_detect = false;
     common_decoder->message.protocol = IrdaProtocolUnknown;
-    if (common_decoder->protocol->timings.preamble_mark == 0) {
+    if ((common_decoder->protocol->timings.preamble_mark == 0) && (common_decoder->timings_cnt > 0)) {
         --common_decoder->timings_cnt;
         shift_left_array(common_decoder->timings, common_decoder->timings_cnt, 1);
     }