  <?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.alsa-project.org/main/index.php?action=history&amp;feed=atom&amp;title=Detailed_changes_v1.2.5_v1.2.5.1</id>
	<title>Detailed changes v1.2.5 v1.2.5.1 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.alsa-project.org/main/index.php?action=history&amp;feed=atom&amp;title=Detailed_changes_v1.2.5_v1.2.5.1"/>
	<link rel="alternate" type="text/html" href="https://www.alsa-project.org/main/index.php?title=Detailed_changes_v1.2.5_v1.2.5.1&amp;action=history"/>
	<updated>2026-04-06T21:24:04Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.0</generator>
	<entry>
		<id>https://www.alsa-project.org/main/index.php?title=Detailed_changes_v1.2.5_v1.2.5.1&amp;diff=7410&amp;oldid=prev</id>
		<title>Perex: 1 revision</title>
		<link rel="alternate" type="text/html" href="https://www.alsa-project.org/main/index.php?title=Detailed_changes_v1.2.5_v1.2.5.1&amp;diff=7410&amp;oldid=prev"/>
		<updated>2021-06-14T12:34:46Z</updated>

		<summary type="html">&lt;p&gt;1 revision&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 12:34, 14 June 2021&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Perex</name></author>
	</entry>
	<entry>
		<id>https://www.alsa-project.org/main/index.php?title=Detailed_changes_v1.2.5_v1.2.5.1&amp;diff=7409&amp;oldid=prev</id>
		<title>Perex at 12:34, 14 June 2021</title>
		<link rel="alternate" type="text/html" href="https://www.alsa-project.org/main/index.php?title=Detailed_changes_v1.2.5_v1.2.5.1&amp;diff=7409&amp;oldid=prev"/>
		<updated>2021-06-14T12:34:45Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;
{| align=&amp;quot;right&amp;quot;&lt;br /&gt;
| __TOC__&lt;br /&gt;
|}&lt;br /&gt;
=Detailed changelog between 1.2.5 and 1.2.5.1 releases=&lt;br /&gt;
=Changelog between 1.2.5 and 1.2.5.1 releases=&lt;br /&gt;
==alsa-lib==&lt;br /&gt;
===Core===&lt;br /&gt;
- Release v1.2.5.1&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
- Fix EXPORT_SYMBOL attribute for clang&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 Clang doesn't have the externally_visible attribute.&lt;br /&gt;
 &lt;br /&gt;
     src/pcm/pcm.c:1503:1: error: unknown attribute 'externally_visible' ignored [-Werror,-Wunknown-attributes]&lt;br /&gt;
     #define EXPORT_SYMBOL __attribute__((visibility(&amp;quot;default&amp;quot;),externally_visible))                                                         ^&amp;lt;/code&amp;gt;&lt;br /&gt;
- configure: check if eaccess() is available&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 To fix the build error on Android:&lt;br /&gt;
   src/ucm/parser.c:2521:7: error: implicit declaration of function 'eaccess' is invalid in C99 [-Werror,-Wimplicit-function-declaration]&lt;br /&gt;
                 if (eaccess(filename, R_OK))&lt;br /&gt;
                     ^&lt;br /&gt;
   src/ucm/parser.c:2521:7: note: did you mean 'access'?&amp;lt;/code&amp;gt;&lt;br /&gt;
===Control API===&lt;br /&gt;
- control: remap - fix an infinite recursive call in the async callback&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 The function snd_ctl_remap_async will call itself infinitely. Looks like&lt;br /&gt;
 a typo.&amp;lt;/code&amp;gt;&lt;br /&gt;
- control: remap - fix uninitialized value in parse_map_vindex()&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
===PCM API===&lt;br /&gt;
- pcm: direct - remove dead code&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
- pcm: softvol - fix early exit in add_tlv_info()&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
- pcm: remove extra NULL checks in snd_pcm_dshare_open()&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
- pcm: remove extra NULL checks in snd_pcm_dsnoop_open()&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
- pcm: remove extra NULL checks in snd_pcm_dmix_open()&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
- pcm: direct - fix pcmp error path in _snd_pcm_direct_new()&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
===Timer API===&lt;br /&gt;
- timer: remove dead code in _snd_timer_hw_open()&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
===Use Case Manager API===&lt;br /&gt;
- configure: check if eaccess() is available&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 To fix the build error on Android:&lt;br /&gt;
   src/ucm/parser.c:2521:7: error: implicit declaration of function 'eaccess' is invalid in C99 [-Werror,-Wimplicit-function-declaration]&lt;br /&gt;
                 if (eaccess(filename, R_OK))&lt;br /&gt;
                     ^&lt;br /&gt;
   src/ucm/parser.c:2521:7: note: did you mean 'access'?&amp;lt;/code&amp;gt;&lt;br /&gt;
- ucm: include sys/wait.h to fix build on Android&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
     src/ucm/main.c:788:8: error: implicit declaration of function 'WIFSIGNALED' is invalid in C99 [-Werror,-Wimplicit-function-declaration]&lt;br /&gt;
                         if (WIFSIGNALED(err)) {&lt;br /&gt;
                             ^&lt;br /&gt;
     src/ucm/main.c:790:10: error: implicit declaration of function 'WIFEXITED' is invalid in C99 [-Werror,-Wimplicit-function-declaration]&lt;br /&gt;
                         } if (WIFEXITED(err)) {&lt;br /&gt;
                               ^&lt;br /&gt;
     src/ucm/main.c:791:34: error: implicit declaration of function 'WEXITSTATUS' is invalid in C99 [-Werror,-Wimplicit-function-declaration]&lt;br /&gt;
                                 if (ignore_error == false &amp;amp;&amp;amp; WEXITSTATUS(err) != 0) {&amp;lt;/code&amp;gt;&lt;br /&gt;
- ucm_exec.c: Include limits.h explicitly to fix build on musl&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 Fixes:&lt;br /&gt;
 | ../../../alsa-lib-1.2.5/src/ucm/ucm_exec.c: In function 'find_exec':&lt;br /&gt;
 | ../../../alsa-lib-1.2.5/src/ucm/ucm_exec.c:43:18: error: 'PATH_MAX' undeclared (first use in this function)&lt;br /&gt;
 |    43 |         char bin[PATH_MAX];&lt;br /&gt;
 |       |                  ^~~~~~~~&lt;br /&gt;
 | ../../../alsa-lib-1.2.5/src/ucm/ucm_exec.c:43:18: note: each undeclared identifier is reported only once for each function it appears in&lt;br /&gt;
 | ../../../alsa-lib-1.2.5/src/ucm/ucm_exec.c: In function 'uc_mgr_exec':&lt;br /&gt;
 | ../../../alsa-lib-1.2.5/src/ucm/ucm_exec.c:177:18: error: 'PATH_MAX' undeclared (first use in this function)&lt;br /&gt;
 |   177 |         char bin[PATH_MAX];&lt;br /&gt;
 |       |                  ^~~~~~~~&amp;lt;/code&amp;gt;&lt;br /&gt;
- ucm: compound_merge() - fix use after free (and logic)&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
- ucm: fix possible memory leak in parse_verb_file()&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
- ucm: fix out-of-array access in rval_device_lookup_init()&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
- ucm: check error value in parse_lookup_query()&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
- ucm: fix possible NULL pointer dereference in uc_mgr_exec()&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
- ucm: find_exec() - fix memory leak (dir)&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
- ucm: fix if_eval_path() - access NULL pointer&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
- ucm: fix use after free in if_eval_regex_match()&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
- ucm: fix error path in execute_cfgsave()&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
- ucm: fix _alibpref string (add '.' delimiter to the end)&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
- ucm: add _alibpref to get the private device prefix&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 It may be useful to get the device prefix for the local configuration.&lt;br /&gt;
 &lt;br /&gt;
 Link: https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/1251&amp;lt;/code&amp;gt;&lt;br /&gt;
===Configuration===&lt;br /&gt;
- conf: snd_config_get_card() remove unused assignment&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
- conf: remove dead code in snd_config_get_card()&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
- conf: fix load_for_all_cards()&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 The 63f7745b commit is loading the driver specific configuration&lt;br /&gt;
 multiple times which ends with the array merges (see the bug).&lt;br /&gt;
 &lt;br /&gt;
 Introduce the loaded compound which traces the already loaded&lt;br /&gt;
 driver configurations and skip the multiple load requests.&amp;lt;/code&amp;gt;&lt;br /&gt;
==alsa-utils==&lt;br /&gt;
===Core===&lt;br /&gt;
- Release v1.2.5.1&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
===ALSA Control (alsactl)===&lt;br /&gt;
- utils.c: Include limits.h explicitly to fix build on musl&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 Fixes:&lt;br /&gt;
 | ../../alsa-utils-1.2.5/alsactl/utils.c: In function 'snd_card_clean_cfgdir':&lt;br /&gt;
 | ../../alsa-utils-1.2.5/alsactl/utils.c:309:19: error: 'PATH_MAX' undeclared (first use in this function)&lt;br /&gt;
 |   309 |         char path[PATH_MAX];&lt;br /&gt;
 |       |                   ^~~~~~~~&lt;br /&gt;
 | ../../alsa-utils-1.2.5/alsactl/utils.c:309:19: note: each undeclared identifier is reported only once for each function it appears in&amp;lt;/code&amp;gt;&lt;br /&gt;
- alsactl: load_state: Only delete config if one was loaded&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 If load_configuration fails with open_failed == true, load_state will&lt;br /&gt;
 jump to the out label without config being initialized and pass this&lt;br /&gt;
 uninitialized config value to snd_config_delete. This commit fixes this&lt;br /&gt;
 issue by initializing config with NULL and checking if it is non-null&lt;br /&gt;
 before invoking snd_config_delete.&lt;br /&gt;
 &lt;br /&gt;
 BugLink: https://github.com/alsa-project/alsa-utils/issues/93&amp;lt;/code&amp;gt;&lt;br /&gt;
- alsactl: load_state() - initialize config variable for the open_failed case&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
- alsactl: fix lock_fd unlock in load_configuration() - error path&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
- alsactl: state - fix ‘item’ may be used uninitialized gcc warning&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
- alsactl: check for error values from snd_config_get...()&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
- alsactl: init() - return error value from snd_card_iterator_sinit() call&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
- alsactl: return error value in dump_config_tree()&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
- alsactl: fix the nested iteration&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 There may be nested iterations for hw: card names.&lt;br /&gt;
 Handle this card name in snd_card_iterator_sinit().&lt;br /&gt;
 &lt;br /&gt;
 BugLink: https://github.com/alsa-project/alsa-lib/issues/142&amp;lt;/code&amp;gt;&lt;br /&gt;
===Audio Transfer utility===&lt;br /&gt;
- axfer: fix wrong calloc() item size in allocate_containers()&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
===alsatplg (topology)===&lt;br /&gt;
- topology: fix few coverity detected defects&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
- topology: fix potential null pointer from strchr&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 This patch adds check to the return pointer from strchr,&lt;br /&gt;
 because it may be null and cause segment fault, if component&lt;br /&gt;
 is not properly constructed.&amp;lt;/code&amp;gt;&lt;br /&gt;
===aplay/arecord===&lt;br /&gt;
- arecord: Inform users when 8-bit sampling is used on tty&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 When we reverted 0c5948e (&amp;quot;aplay: try to use 16-bit format to&lt;br /&gt;
 increase capture quality&amp;quot;), we should also handle the original&lt;br /&gt;
 problem somehow. This code shows a warning with a hint to&lt;br /&gt;
 the right parameter.&amp;lt;/code&amp;gt;&lt;br /&gt;
- Revert &amp;quot;aplay: try to use 16-bit format to increase capture quality&amp;quot;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 This reverts commit 0c5948e98a6a8535c89b7bcab13017d7732181c6.&lt;br /&gt;
 &lt;br /&gt;
 Link: https://github.com/alsa-project/alsa-utils/issues/96&amp;lt;/code&amp;gt;&lt;br /&gt;
===aseqnet===&lt;br /&gt;
- added an option to aseqnet to optionally set the midi process name&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 This option allows to run multiple instances of aseqnet without having&lt;br /&gt;
 to double check the assigned port number, since each one can get spawned&lt;br /&gt;
 with a unique name.&amp;lt;/code&amp;gt;&lt;br /&gt;
==alsa-ucm-conf==&lt;br /&gt;
===Configuration===&lt;br /&gt;
- tegra: Add UCM for Nvidia Tegra HDMI Audio&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
- HDA-Intel: the lookups are supported from syntax 4&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
- tegra: shuffle ASUS Google Nexus 7 files&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 BugLink: https://github.com/alsa-project/alsa-ucm-conf/pull/94&amp;lt;/code&amp;gt;&lt;br /&gt;
- tegra: shuffle Acer Iconia Tab A500 files&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 BugLink: https://github.com/alsa-project/alsa-ucm-conf/pull/94&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Perex</name></author>
	</entry>
</feed>