Page MenuHome

audaspace-deadlock.patch

audaspace-deadlock.patch

Index: intern/audaspace/intern/AUD_Reference.h
===================================================================
--- intern/audaspace/intern/AUD_Reference.h (revisão 46184)
+++ intern/audaspace/intern/AUD_Reference.h (cópia de trabalho)
@@ -174,8 +174,14 @@
std::cerr << "-" << typeid(*m_reference).name() << std::endl;
#endif
if(AUD_ReferenceHandler::decref(m_original))
+ {
+ pthread_mutex_unlock(AUD_ReferenceHandler::getMutex());
delete m_reference;
- pthread_mutex_unlock(AUD_ReferenceHandler::getMutex());
+ }
+ else
+ {
+ pthread_mutex_unlock(AUD_ReferenceHandler::getMutex());
+ }
}
/**
@@ -194,7 +200,11 @@
std::cerr << "-" << typeid(*m_reference).name() << std::endl;
#endif
if(AUD_ReferenceHandler::decref(m_original))
+ {
+ pthread_mutex_unlock(AUD_ReferenceHandler::getMutex());
delete m_reference;
+ pthread_mutex_lock(AUD_ReferenceHandler::getMutex());
+ }
m_original = ref.m_original;
m_reference = ref.m_reference;

File Metadata

Mime Type
text/x-diff
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
24/63/7664c9243a870167bfee1d78d630

Event Timeline