]> Kevux Git Server - fll/commitdiff
Update: Use copy of flag to avoid possible race conditions with controller_thread_is_...
authorKevin Day <Kevin@kevux.org>
Sat, 13 Jul 2024 04:28:38 +0000 (23:28 -0500)
committerKevin Day <Kevin@kevux.org>
Sat, 13 Jul 2024 04:28:38 +0000 (23:28 -0500)
The thread.enabled is checked multiple times in controller_thread_is_enabled() but this value may have changed.
Make a constant copy and reference that copy so that any changes after the first read will not affect the function results.

level_3/controller/c/thread/private-thread.c

index 3aa9c74e06b8a2d8818b221802f7366eb5139c3c..e06ee5708e4a6dab68d1717497ab44b7c599c7e4 100644 (file)
@@ -172,11 +172,9 @@ extern "C" {
 #ifndef _di_controller_thread_is_enabled_
   f_status_t controller_thread_is_enabled(const bool is_normal, controller_thread_t * const thread) {
 
-    if (is_normal) {
-      return thread->enabled == controller_thread_enabled_e;
-    }
+    const bool enabled = thread->enabled;
 
-    return thread->enabled;
+    return is_normal ? enabled == controller_thread_enabled_e : enabled;
   }
 #endif // _di_controller_thread_is_enabled_