Error: if thread_info.state is DRAINED, it cannot be equal to RUNNING.
So, part of condition is redundant or wrong. Original code looks
different from this (see commit 045c1d602dcba578), so it is most likely
wrong. We need to set thread_info.drained to 1 only if thread_info.state
is not DRAINED or RUNNING.

Issue detected by PVS Studio and Cppcheck.

Signed-off-by: Boris Egorov <[email protected]>
---
 src/pulsecore/sink-input.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/pulsecore/sink-input.c b/src/pulsecore/sink-input.c
index d95a93e..29beca6 100644
--- a/src/pulsecore/sink-input.c
+++ b/src/pulsecore/sink-input.c
@@ -1876,7 +1876,7 @@ void pa_sink_input_set_state_within_thread(pa_sink_input 
*i, pa_sink_input_state
         return;
 
     if ((state == PA_SINK_INPUT_DRAINED || state == PA_SINK_INPUT_RUNNING) &&
-        !(i->thread_info.state == PA_SINK_INPUT_DRAINED || 
i->thread_info.state != PA_SINK_INPUT_RUNNING))
+        !(i->thread_info.state == PA_SINK_INPUT_DRAINED || 
i->thread_info.state == PA_SINK_INPUT_RUNNING))
         pa_atomic_store(&i->thread_info.drained, 1);
 
     corking = state == PA_SINK_INPUT_CORKED && i->thread_info.state == 
PA_SINK_INPUT_RUNNING;
-- 
2.1.4

_______________________________________________
pulseaudio-discuss mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss

Reply via email to