mirror of
				https://github.com/luanti-org/luanti.git
				synced 2025-11-04 01:05:48 +01:00 
			
		
		
		
	Settings: Prevent mutex deadlock in remove() (#7803)
This commit is contained in:
		@@ -908,17 +908,20 @@ bool Settings::setNoiseParams(const std::string &name,
 | 
			
		||||
 | 
			
		||||
bool Settings::remove(const std::string &name)
 | 
			
		||||
{
 | 
			
		||||
	MutexAutoLock lock(m_mutex);
 | 
			
		||||
	// Lock as short as possible, unlock before doCallbacks()
 | 
			
		||||
	m_mutex.lock();
 | 
			
		||||
 | 
			
		||||
	SettingEntries::iterator it = m_settings.find(name);
 | 
			
		||||
	if (it != m_settings.end()) {
 | 
			
		||||
		delete it->second.group;
 | 
			
		||||
		m_settings.erase(it);
 | 
			
		||||
		m_mutex.unlock();
 | 
			
		||||
 | 
			
		||||
		doCallbacks(name);
 | 
			
		||||
		return true;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	m_mutex.unlock();
 | 
			
		||||
	return false;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user