Ver Fonte

prc: fix recursive use of non-recursive mutex

rdb há 6 anos atrás
pai
commit
666568a513
1 ficheiros alterados com 5 adições e 1 exclusões
  1. 5 1
      dtool/src/prc/configVariableBool.cxx

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

@@ -12,6 +12,7 @@
  */
  */
 
 
 #include "configVariableBool.h"
 #include "configVariableBool.h"
+#include "mutexImpl.h"
 
 
 /**
 /**
  * Refreshes the cached value.
  * Refreshes the cached value.
@@ -21,7 +22,10 @@ reload_value() const {
   // NB. MSVC doesn't guarantee that this mutex is initialized in a
   // 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
   // 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.
   // 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();
   lock.lock();
 
 
   // We check again for cache validity since another thread may have beaten
   // We check again for cache validity since another thread may have beaten