forked from enlightenment/enlightenment
fix possible crash when freeing pulse sinks
SVN revision: 64648
This commit is contained in:
parent
d4c9dceed4
commit
c960c47c58
|
@ -459,6 +459,7 @@ struct Pulse_Sink {
|
|||
Eina_Bool mute : 1; /**< Mute switch of the sink */
|
||||
Eina_Bool update : 1;
|
||||
Eina_Bool source : 1; /**< sink is actually a source */
|
||||
Eina_Bool deleted : 1; /**< sink has been deleted */
|
||||
};
|
||||
|
||||
typedef uint32_t pa_pstream_descriptor[PA_PSTREAM_DESCRIPTOR_MAX];
|
||||
|
|
|
@ -164,15 +164,19 @@ pulse_sink_free(Pulse_Sink *sink)
|
|||
{
|
||||
Pulse_Sink_Port_Info *pi;
|
||||
if (!sink) return;
|
||||
if (sink->source)
|
||||
if (!sink->deleted)
|
||||
{
|
||||
if (eina_hash_del_by_key(pulse_sources, (uintptr_t*)&sink->index))
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (eina_hash_del_by_key(pulse_sinks, (uintptr_t*)&sink->index))
|
||||
return;
|
||||
sink->deleted = EINA_TRUE;
|
||||
if (sink->source)
|
||||
{
|
||||
eina_hash_del_by_key(pulse_sources, (uintptr_t*)&sink->index);
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
eina_hash_del_by_key(pulse_sinks, (uintptr_t*)&sink->index);
|
||||
return;
|
||||
}
|
||||
}
|
||||
eina_stringshare_del(sink->name);
|
||||
eina_stringshare_del(sink->description);
|
||||
|
|
Loading…
Reference in New Issue