diff options
| -rw-r--r-- | src/pulsecore/sink.c | 3 | ||||
| -rw-r--r-- | src/pulsecore/source.c | 14 | 
2 files changed, 10 insertions, 7 deletions
diff --git a/src/pulsecore/sink.c b/src/pulsecore/sink.c index a66097bc..015cf4d5 100644 --- a/src/pulsecore/sink.c +++ b/src/pulsecore/sink.c @@ -671,7 +671,8 @@ int pa_sink_process_msg(pa_msgobject *o, int code, void *userdata, pa_memchunk *          case PA_SINK_MESSAGE_REMOVE_INPUT: {              pa_sink_input *i = userdata; -            pa_hashmap_remove(s->thread_info.inputs, PA_UINT32_TO_PTR(i->index)); +            if (pa_hashmap_remove(s->thread_info.inputs, PA_UINT32_TO_PTR(i->index))) +                pa_sink_input_unref(i);              return 0;          } diff --git a/src/pulsecore/source.c b/src/pulsecore/source.c index ce1ee987..6ca81727 100644 --- a/src/pulsecore/source.c +++ b/src/pulsecore/source.c @@ -384,20 +384,22 @@ unsigned pa_source_used_by(pa_source *s) {      return pa_idxset_size(s->outputs);  } -int pa_source_process_msg(pa_msgobject *o, int code, void *userdata, pa_memchunk *chunk) { -    pa_source *s = PA_SOURCE(o); +int pa_source_process_msg(pa_msgobject *object, int code, void *userdata, pa_memchunk *chunk) { +    pa_source *s = PA_SOURCE(object);      pa_source_assert_ref(s);      switch ((pa_source_message_t) code) {          case PA_SOURCE_MESSAGE_ADD_OUTPUT: { -            pa_source_output *i = userdata; -            pa_hashmap_put(s->thread_info.outputs, PA_UINT32_TO_PTR(i->index), pa_source_output_ref(i)); +            pa_source_output *o = userdata; +            pa_hashmap_put(s->thread_info.outputs, PA_UINT32_TO_PTR(o->index), pa_source_output_ref(o));              return 0;          }          case PA_SOURCE_MESSAGE_REMOVE_OUTPUT: { -            pa_source_output *i = userdata; -            pa_hashmap_remove(s->thread_info.outputs, PA_UINT32_TO_PTR(i->index)); +            pa_source_output *o = userdata; +            if (pa_hashmap_remove(s->thread_info.outputs, PA_UINT32_TO_PTR(o->index))) +                pa_source_output_unref(o); +                          return 0;          }  | 
