On Fri, 2013-11-15 at 09:31 +0100, Colin Guthrie wrote: > 'Twas brillig, and Tanu Kaskinen at 05/11/13 20:34 did gyre and gimble: > > src/pulsecore/card.c | 7 ++++++- > > 1 file changed, 6 insertions(+), 1 deletion(-) > > > > New commits: > > commit f434087e42bca15fae938f6cc01d2875c4c7728b > > Author: Luiz Augusto von Dentz <luiz.von.dentz at intel.com> > > Date: Sun Nov 3 15:05:34 2013 +0200 > > > > card: Only set active_profile with available profile > > > > When a card is being created and no profile has been assigned > > pa_card_new will attempt to select one from the list but it does that > > without checking the available flag which can lead to select profiles > > not available. > > > > diff --git a/src/pulsecore/card.c b/src/pulsecore/card.c > > index e6e0836..4ae16c2 100644 > > --- a/src/pulsecore/card.c > > +++ b/src/pulsecore/card.c > > @@ -195,9 +195,14 @@ pa_card *pa_card_new(pa_core *core, pa_card_new_data *data) { > > c->save_profile = data->save_profile; > > > > if (!c->active_profile) { > > - PA_HASHMAP_FOREACH(profile, c->profiles, state) > > + PA_HASHMAP_FOREACH(profile, c->profiles, state) { > > + if (profile->available == PA_AVAILABLE_NO) > > + continue; > > + > > if (!c->active_profile || profile->priority > c->active_profile->priority) > > c->active_profile = profile; > > + } > > + pa_assert(c->active_profile); > > Doesn't this leave the possibility of a crash if no active profiles exist? > > Wouldn't it make more sense to fall back to setting it to *something* > even if it is unavailable? There's always the "off" profile that will be available, both in alsa and bluetooth. It seems that both you and Luiz posted patches that change the same code, and both remove the assertion. Have you talked with Luiz? Could you two agree which version you prefer? I don't have an opinion at this point. I haven't concentrated on the patches enough to even know what problem you're solving - is it just that the assertion makes you nervous, or is there some other benefit. -- Tanu