mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-10-29 05:40:27 -04:00
acp: avoid copying structure into itself
sync_mixer() calls d->set_volume(d, &d->real_volume); which makes v and &dev->real_volume point to the same memory area and valgrind complains: Source and destination overlap in memcpy(0xcc53e2c, 0xcc53e2c, 260) at 0x488CFA0: __GI_memcpy (vg_replace_strmem.c:1121) by 0xBB0803F: set_volume (acp.c:1143) by 0xBB0EDCB: acp_device_set_port (acp.c:1897) by 0xBA9CD87: impl_set_param (alsa-acp-device.c:757) because the compiler apparently implicitly converts this into a memcpy() and memcpy(3) explicitly says "The memory areas must not overlap."
This commit is contained in:
parent
539115fc59
commit
f5546d27c1
1 changed files with 2 additions and 1 deletions
|
|
@ -1169,7 +1169,8 @@ static void set_volume(pa_alsa_device *dev, const pa_cvolume *v)
|
||||||
{
|
{
|
||||||
pa_cvolume r;
|
pa_cvolume r;
|
||||||
|
|
||||||
dev->real_volume = *v;
|
if (v != &dev->real_volume)
|
||||||
|
dev->real_volume = *v;
|
||||||
|
|
||||||
if (!dev->mixer_handle)
|
if (!dev->mixer_handle)
|
||||||
return;
|
return;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue