<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html lang="en">
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<title>
GitLab
</title>



<style>img {
max-width: 100%; height: auto;
}
</style>
</head>
<body>
<div class="content">
<h3>
Arun Raghavan pushed to branch master
at <a href="https://gitlab.freedesktop.org/pulseaudio/pulseaudio">PulseAudio / pulseaudio</a>
</h3>
<h4>
Commits:
</h4>
<ul>
<li>
<strong><a href="https://gitlab.freedesktop.org/pulseaudio/pulseaudio/commit/adef9a442196a9b5ad6da16f7a88419ab1a4cac8">adef9a44</a></strong>
<div>
<span>by Hans de Goede</span>
<i>at 2018-12-24T11:45:48Z</i>
</div>
<pre class="commit-message" style="white-space: pre-wrap; margin: 0;">alsa-ucm: Fix UCM devices which names share a prefix being seen as the same

Before this commit ucm_port_contains() was using a strncmp to compare
UCM-device-names without first checking that the part of the port_name
being compared and the device-name have the same length, this was causing
it to return true for both "InternalMic-IN1" and "InternalMic-IN12" when
port_name contained "InternalMic-IN1".

We hit this with the bytcr_rt5651 UCM profile which has "InternalMic-IN1",
"InternalMic-IN2" and "InternalMic-IN12" devices, for devices with their
internal mic connected to IN1, or IN2, or using stereo internal mics
connected to both. This problem resulted in various problems including
the RECMIXL? BST2 switch getting turned on when selecting only
"InternalMic-IN1", as well as confusing the gnome-control-center sound
panel, which could not figure out which device is selected in this case.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
</pre>
</li>
</ul>
<h4>1 changed file:</h4>
<ul>
<li class="file-stats">
<a href="#644a348846ae02065ff04e4571fdf47667774531">
src/modules/alsa/alsa-ucm.c
</a>
</li>
</ul>
<h4>Changes:</h4>
<li id="644a348846ae02065ff04e4571fdf47667774531">
<a href="https://gitlab.freedesktop.org/pulseaudio/pulseaudio/commit/adef9a442196a9b5ad6da16f7a88419ab1a4cac8#644a348846ae02065ff04e4571fdf47667774531"><strong>src/modules/alsa/alsa-ucm.c</strong></a>
<hr>
<table class="code white" style="font-family: monospace; font-size: 90%;" bgcolor="#fff" width="100%" cellpadding="0" cellspacing="0">
<tr class="line_holder match" id="" style="line-height: 1.6;">
<td class="diff-line-num unfold js-unfold old_line" data-linenumber="809" style="width: 35px; color: rgba(0,0,0,0.3); border-right-width: 1px; border-right-color: #f0f0f0; border-right-style: solid; padding: 0 5px;" align="right" bgcolor="#fafafa">...</td>
<td class="diff-line-num unfold js-unfold new_line" data-linenumber="809" style="width: 35px; color: rgba(0,0,0,0.3); border-right-width: 1px; border-right-color: #f0f0f0; border-right-style: solid; padding: 0 5px;" align="right" bgcolor="#fafafa">...</td>
<td class="line_content match " style="padding-left: 0.5em; padding-right: 0.5em; color: rgba(0,0,0,0.3);" bgcolor="#fafafa">@@ -809,7 +809,7 @@ static int ucm_port_contains(const char *port_name, const char *dev_name, bool i</td>
</tr>
<tr class="line_holder" id="" style="line-height: 1.6;">
<td class="diff-line-num old_line" data-linenumber="809" style="width: 35px; color: rgba(0,0,0,0.3); border-right-width: 1px; border-right-color: #f0f0f0; border-right-style: solid; padding: 0 5px;" align="right" bgcolor="#fafafa">
809
</td>
<td class="diff-line-num new_line" data-linenumber="809" style="width: 35px; color: rgba(0,0,0,0.3); border-right-width: 1px; border-right-color: #f0f0f0; border-right-style: solid; padding: 0 5px;" align="right" bgcolor="#fafafa">
809
</td>
<td class="line_content noteable_line" style="padding-left: 0.5em; padding-right: 0.5em;">
<pre style="margin: 0;"> <span id="LC809" class="line" lang="c">    <span class="n" style="color: #333;">port_name</span> <span class="o" style="font-weight: 600;">+=</span> <span class="n" style="color: #333;">is_sink</span> <span class="o" style="font-weight: 600;">?</span> <span class="n" style="color: #333;">strlen</span><span class="p">(</span><span class="n" style="color: #333;">PA_UCM_PRE_TAG_OUTPUT</span><span class="p">)</span> <span class="o" style="font-weight: 600;">:</span> <span class="n" style="color: #333;">strlen</span><span class="p">(</span><span class="n" style="color: #333;">PA_UCM_PRE_TAG_INPUT</span><span class="p">);</span></span>
</pre>
</td>
</tr>
<tr class="line_holder" id="" style="line-height: 1.6;">
<td class="diff-line-num old_line" data-linenumber="810" style="width: 35px; color: rgba(0,0,0,0.3); border-right-width: 1px; border-right-color: #f0f0f0; border-right-style: solid; padding: 0 5px;" align="right" bgcolor="#fafafa">
810
</td>
<td class="diff-line-num new_line" data-linenumber="810" style="width: 35px; color: rgba(0,0,0,0.3); border-right-width: 1px; border-right-color: #f0f0f0; border-right-style: solid; padding: 0 5px;" align="right" bgcolor="#fafafa">
810
</td>
<td class="line_content noteable_line" style="padding-left: 0.5em; padding-right: 0.5em;">
<pre style="margin: 0;"> <span id="LC810" class="line" lang="c"></span>
</pre>
</td>
</tr>
<tr class="line_holder" id="" style="line-height: 1.6;">
<td class="diff-line-num old_line" data-linenumber="811" style="width: 35px; color: rgba(0,0,0,0.3); border-right-width: 1px; border-right-color: #f0f0f0; border-right-style: solid; padding: 0 5px;" align="right" bgcolor="#fafafa">
811
</td>
<td class="diff-line-num new_line" data-linenumber="811" style="width: 35px; color: rgba(0,0,0,0.3); border-right-width: 1px; border-right-color: #f0f0f0; border-right-style: solid; padding: 0 5px;" align="right" bgcolor="#fafafa">
811
</td>
<td class="line_content noteable_line" style="padding-left: 0.5em; padding-right: 0.5em;">
<pre style="margin: 0;"> <span id="LC811" class="line" lang="c">    <span class="k" style="font-weight: 600;">while</span> <span class="p">((</span><span class="n" style="color: #333;">r</span> <span class="o" style="font-weight: 600;">=</span> <span class="n" style="color: #333;">pa_split_in_place</span><span class="p">(</span><span class="n" style="color: #333;">port_name</span><span class="p">,</span> <span class="s" style="color: #d14;">"+"</span><span class="p">,</span> <span class="o" style="font-weight: 600;">&</span><span class="n" style="color: #333;">len</span><span class="p">,</span> <span class="o" style="font-weight: 600;">&</span><span class="n" style="color: #333;">state</span><span class="p">)))</span> <span class="p">{</span></span>
</pre>
</td>
</tr>
<tr class="line_holder old" id="" style="line-height: 1.6;">
<td class="diff-line-num old old_line" data-linenumber="812" style="width: 35px; color: rgba(0,0,0,0.3); border-right-width: 1px; border-right-color: #fac5cd; border-right-style: solid; padding: 0 5px;" align="right" bgcolor="#f9d7dc">
812
</td>
<td class="diff-line-num new_line old" data-linenumber="812" style="width: 35px; color: rgba(0,0,0,0.3); border-right-width: 1px; border-right-color: #fac5cd; border-right-style: solid; padding: 0 5px;" align="right" bgcolor="#f9d7dc">
 
</td>
<td class="line_content noteable_line old" style="padding-left: 0.5em; padding-right: 0.5em;" bgcolor="#fbe9eb">
<pre style="margin: 0;">-<span id="LC812" class="line" lang="c">        <span class="k" style="font-weight: 600;">if</span> <span class="p">(</span><span class="o" style="font-weight: 600;">!</span><span class="n" style="color: #333;">strncmp</span><span class="p">(</span><span class="n" style="color: #333;">r</span><span class="p">,</span> <span class="n" style="color: #333;">dev_name</span><span class="p">,</span> <span class="n" style="color: #333;">len</span><span class="p">))</span> <span class="p">{</span></span>
</pre>
</td>
</tr>
<tr class="line_holder new" id="" style="line-height: 1.6;">
<td class="diff-line-num new old_line" data-linenumber="813" style="width: 35px; color: rgba(0,0,0,0.3); border-right-width: 1px; border-right-color: #c7f0d2; border-right-style: solid; padding: 0 5px;" align="right" bgcolor="#ddfbe6">
 
</td>
<td class="diff-line-num new new_line" data-linenumber="812" style="width: 35px; color: rgba(0,0,0,0.3); border-right-width: 1px; border-right-color: #c7f0d2; border-right-style: solid; padding: 0 5px;" align="right" bgcolor="#ddfbe6">
812
</td>
<td class="line_content new noteable_line" style="padding-left: 0.5em; padding-right: 0.5em;" bgcolor="#ecfdf0">
<pre style="margin: 0;">+<span id="LC812" class="line" lang="c">        <span class="k" style="font-weight: 600;">if</span> <span class="p">(</span><span class="n" style="color: #333;"><span class="idiff left">strlen</span></span><span class="p"><span class="idiff">(</span></span><span class="n" style="color: #333;"><span class="idiff">dev_name</span></span><span class="p"><span class="idiff">)</span></span><span class="idiff"> </span><span class="o" style="font-weight: 600;"><span class="idiff">==</span></span><span class="idiff"> </span><span class="n" style="color: #333;"><span class="idiff">len</span></span><span class="idiff"> </span><span class="o" style="font-weight: 600;"><span class="idiff">&&</span></span><span class="idiff right"> </span><span class="o" style="font-weight: 600;">!</span><span class="n" style="color: #333;">strncmp</span><span class="p">(</span><span class="n" style="color: #333;">r</span><span class="p">,</span> <span class="n" style="color: #333;">dev_name</span><span class="p">,</span> <span class="n" style="color: #333;">len</span><span class="p">))</span> <span class="p">{</span></span>
</pre>
</td>
</tr>
<tr class="line_holder" id="" style="line-height: 1.6;">
<td class="diff-line-num old_line" data-linenumber="813" style="width: 35px; color: rgba(0,0,0,0.3); border-right-width: 1px; border-right-color: #f0f0f0; border-right-style: solid; padding: 0 5px;" align="right" bgcolor="#fafafa">
813
</td>
<td class="diff-line-num new_line" data-linenumber="813" style="width: 35px; color: rgba(0,0,0,0.3); border-right-width: 1px; border-right-color: #f0f0f0; border-right-style: solid; padding: 0 5px;" align="right" bgcolor="#fafafa">
813
</td>
<td class="line_content noteable_line" style="padding-left: 0.5em; padding-right: 0.5em;">
<pre style="margin: 0;"> <span id="LC813" class="line" lang="c">            <span class="n" style="color: #333;">ret</span> <span class="o" style="font-weight: 600;">=</span> <span class="mi" style="color: #099;">1</span><span class="p">;</span></span>
</pre>
</td>
</tr>
<tr class="line_holder" id="" style="line-height: 1.6;">
<td class="diff-line-num old_line" data-linenumber="814" style="width: 35px; color: rgba(0,0,0,0.3); border-right-width: 1px; border-right-color: #f0f0f0; border-right-style: solid; padding: 0 5px;" align="right" bgcolor="#fafafa">
814
</td>
<td class="diff-line-num new_line" data-linenumber="814" style="width: 35px; color: rgba(0,0,0,0.3); border-right-width: 1px; border-right-color: #f0f0f0; border-right-style: solid; padding: 0 5px;" align="right" bgcolor="#fafafa">
814
</td>
<td class="line_content noteable_line" style="padding-left: 0.5em; padding-right: 0.5em;">
<pre style="margin: 0;"> <span id="LC814" class="line" lang="c">            <span class="k" style="font-weight: 600;">break</span><span class="p">;</span></span>
</pre>
</td>
</tr>
<tr class="line_holder" id="" style="line-height: 1.6;">
<td class="diff-line-num old_line" data-linenumber="815" style="width: 35px; color: rgba(0,0,0,0.3); border-right-width: 1px; border-right-color: #f0f0f0; border-right-style: solid; padding: 0 5px;" align="right" bgcolor="#fafafa">
815
</td>
<td class="diff-line-num new_line" data-linenumber="815" style="width: 35px; color: rgba(0,0,0,0.3); border-right-width: 1px; border-right-color: #f0f0f0; border-right-style: solid; padding: 0 5px;" align="right" bgcolor="#fafafa">
815
</td>
<td class="line_content noteable_line" style="padding-left: 0.5em; padding-right: 0.5em;">
<pre style="margin: 0;"> <span id="LC815" class="line" lang="c">        <span class="p">}</span></span>
</pre>
</td>
</tr>

</table>
<br>
</li>

</div>
<div class="footer" style="margin-top: 10px;">
<p style="font-size: small; color: #777777;">

<br>
<a href="https://gitlab.freedesktop.org/pulseaudio/pulseaudio/commit/adef9a442196a9b5ad6da16f7a88419ab1a4cac8">View it on GitLab</a>.
<br>
You're receiving this email because of your account on gitlab.freedesktop.org.
If you'd like to receive fewer emails, you can
adjust your notification settings.
<script type="application/ld+json">{"@context":"http://schema.org","@type":"EmailMessage","action":{"@type":"ViewAction","name":"View Commit","url":"https://gitlab.freedesktop.org/pulseaudio/pulseaudio/commit/adef9a442196a9b5ad6da16f7a88419ab1a4cac8"}}</script>
</p>
</div>
</body>
</html>