Kaynağa Gözat

esp_timer: fix the bug that when timeout of timer happens try to run callback, and high priority task delete the timer and break the callback

Jack 6 yıl önce
ebeveyn
işleme
5a6ac7f32f
1 değiştirilmiş dosya ile 3 ekleme ve 1 silme
  1. 3 1
      components/esp32/esp_timer.c

+ 3 - 1
components/esp32/esp_timer.c

@@ -299,8 +299,10 @@ static void timer_process_alarm(esp_timer_dispatch_t dispatch_method)
 #if WITH_PROFILING
         uint64_t callback_start = now;
 #endif
+        esp_timer_cb_t callback = it->callback;
+        void* arg = it->arg;
         timer_list_unlock();
-        (*it->callback)(it->arg);
+        (*callback)(arg);
         timer_list_lock();
         now = esp_timer_impl_get_time();
 #if WITH_PROFILING