Browse Source

prc: fix recursive use of non-recursive mutex

rdb 6 years ago
parent
commit
666568a513
1 changed files with 5 additions and 1 deletions
  1. 5 1
      dtool/src/prc/configVariableBool.cxx

+ 5 - 1
dtool/src/prc/configVariableBool.cxx

@@ -12,6 +12,7 @@
  */
 
 #include "configVariableBool.h"
+#include "mutexImpl.h"
 
 /**
  * Refreshes the cached value.
@@ -21,7 +22,10 @@ reload_value() const {
   // NB. MSVC doesn't guarantee that this mutex is initialized in a
   // thread-safe manner.  But chances are that the first time this is called
   // is at static init time, when there is no risk of data races.
-  static MutexImpl lock;
+
+  // This needs to be a recursive mutex, because get_bool_word() may end up
+  // indirectly querying another bool config variable.
+  static ReMutexImpl lock;
   lock.lock();
 
   // We check again for cache validity since another thread may have beaten