Просмотр исходного кода

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

Reading large RAW signal causes freeze

Co-authored-by: あく <alleteam@gmail.com>
Albert Kharisov 4 лет назад
Родитель
Сommit
c3a1836fcd
1 измененных файлов с 1 добавлено и 1 удалено
  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->databit_cnt = 0;
     common_decoder->switch_detect = false;
     common_decoder->switch_detect = false;
     common_decoder->message.protocol = IrdaProtocolUnknown;
     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;
         --common_decoder->timings_cnt;
         shift_left_array(common_decoder->timings, common_decoder->timings_cnt, 1);
         shift_left_array(common_decoder->timings, common_decoder->timings_cnt, 1);
     }
     }