]> git.alsa-project.org Git - alsa-lib.git/commitdiff
pcm: plugin - avoid 32-bit to 64-bit return value conversions
authorJaroslav Kysela <jkysela@redhat.com>
Tue, 11 Nov 2025 17:33:41 +0000 (18:33 +0100)
committerJaroslav Kysela <perex@perex.cz>
Wed, 12 Nov 2025 14:36:29 +0000 (15:36 +0100)
Several functions were affected. Simplify code without
any functionality change.

Signed-off-by: Jaroslav Kysela <jkysela@redhat.com>
src/pcm/pcm_plugin.c

index 4fb5345b03728f1478840122d8080fa966cedaf1..7e5e8aa2e9973f25ed4f678275eac96024494afc 100644 (file)
@@ -238,8 +238,7 @@ static snd_pcm_sframes_t snd_pcm_plugin_write_areas(snd_pcm_t *pcm,
        snd_pcm_plugin_t *plugin = pcm->private_data;
        snd_pcm_t *slave = plugin->gen.slave;
        snd_pcm_uframes_t xfer = 0;
-       snd_pcm_sframes_t result;
-       int err;
+       snd_pcm_sframes_t result, err;
 
        while (size > 0) {
                snd_pcm_uframes_t frames = size;
@@ -296,8 +295,7 @@ static snd_pcm_sframes_t snd_pcm_plugin_read_areas(snd_pcm_t *pcm,
        snd_pcm_plugin_t *plugin = pcm->private_data;
        snd_pcm_t *slave = plugin->gen.slave;
        snd_pcm_uframes_t xfer = 0;
-       snd_pcm_sframes_t result;
-       int err;
+       snd_pcm_sframes_t err;
 
        while (size > 0) {
                snd_pcm_uframes_t frames = size;
@@ -305,11 +303,9 @@ static snd_pcm_sframes_t snd_pcm_plugin_read_areas(snd_pcm_t *pcm,
                snd_pcm_uframes_t slave_offset;
                snd_pcm_uframes_t slave_frames = ULONG_MAX;
 
-               result = snd_pcm_mmap_begin(slave, &slave_areas, &slave_offset, &slave_frames);
-               if (result < 0) {
-                       err = result;
+               err = snd_pcm_mmap_begin(slave, &slave_areas, &slave_offset, &slave_frames);
+               if (err < 0)
                        goto error;
-               }
                if (slave_frames == 0)
                        break;
                frames = (plugin->read)(pcm, areas, offset, frames,
@@ -321,20 +317,14 @@ static snd_pcm_sframes_t snd_pcm_plugin_read_areas(snd_pcm_t *pcm,
                        err = -EPIPE;
                        goto error;
                }
-               result = snd_pcm_mmap_commit(slave, slave_offset, slave_frames);
-               if (result > 0 && (snd_pcm_uframes_t)result != slave_frames) {
-                       snd_pcm_sframes_t res;
-
-                       res = plugin->undo_read(slave, areas, offset, frames, slave_frames - result);
-                       if (res < 0) {
-                               err = res;
-                               goto error;
-                       }
-                       frames -= res;
-               }
-               if (result <= 0) {
-                       err = result;
+               err = snd_pcm_mmap_commit(slave, slave_offset, slave_frames);
+               if (err <= 0)
                        goto error;
+               if ((snd_pcm_uframes_t)err != slave_frames) {
+                       err = plugin->undo_read(slave, areas, offset, frames, slave_frames - err);
+                       if (err < 0)
+                               goto error;
+                       frames -= err;
                }
                snd_pcm_mmap_appl_forward(pcm, frames);
                offset += frames;
@@ -394,8 +384,7 @@ snd_pcm_plugin_mmap_commit(snd_pcm_t *pcm,
        const snd_pcm_channel_area_t *areas;
        snd_pcm_uframes_t appl_offset;
        snd_pcm_sframes_t slave_size;
-       snd_pcm_sframes_t xfer;
-       int err;
+       snd_pcm_sframes_t xfer, err;
 
        if (pcm->stream == SND_PCM_STREAM_CAPTURE) {
                snd_pcm_mmap_appl_forward(pcm, size);
@@ -415,29 +404,21 @@ snd_pcm_plugin_mmap_commit(snd_pcm_t *pcm,
                snd_pcm_uframes_t slave_frames = ULONG_MAX;
                snd_pcm_sframes_t result;
 
-               result = snd_pcm_mmap_begin(slave, &slave_areas, &slave_offset, &slave_frames);
-               if (result < 0) {
-                       err = result;
+               err = snd_pcm_mmap_begin(slave, &slave_areas, &slave_offset, &slave_frames);
+               if (err < 0)
                        goto error;
-               }
                if (frames > cont)
                        frames = cont;
                frames = plugin->write(pcm, areas, appl_offset, frames,
                                       slave_areas, slave_offset, &slave_frames);
-               result = snd_pcm_mmap_commit(slave, slave_offset, slave_frames);
-               if (result > 0 && (snd_pcm_uframes_t)result != slave_frames) {
-                       snd_pcm_sframes_t res;
-
-                       res = plugin->undo_write(pcm, slave_areas, slave_offset + result, slave_frames, slave_frames - result);
-                       if (res < 0) {
-                               err = res;
-                               goto error;
-                       }
-                       frames -= res;
-               }
-               if (result <= 0) {
-                       err = result;
+               err = result = snd_pcm_mmap_commit(slave, slave_offset, slave_frames);
+               if (err <= 0)
                        goto error;
+               if ((snd_pcm_uframes_t)result != slave_frames) {
+                       err = plugin->undo_write(pcm, slave_areas, slave_offset + result, slave_frames, slave_frames - result);
+                       if (err < 0)
+                               goto error;
+                       frames -= err;
                }
                snd_pcm_mmap_appl_forward(pcm, frames);
                if (frames == cont)
@@ -466,7 +447,7 @@ snd_pcm_plugin_sync_hw_ptr_capture(snd_pcm_t *pcm,
        snd_pcm_t *slave = plugin->gen.slave;
        const snd_pcm_channel_area_t *areas;
        snd_pcm_uframes_t xfer, hw_offset, size;
-       int err;
+       snd_pcm_sframes_t err;
 
        xfer = snd_pcm_mmap_capture_avail(pcm);
        size = pcm->buffer_size - xfer;
@@ -478,7 +459,6 @@ snd_pcm_plugin_sync_hw_ptr_capture(snd_pcm_t *pcm,
                const snd_pcm_channel_area_t *slave_areas;
                snd_pcm_uframes_t slave_offset;
                snd_pcm_uframes_t slave_frames = ULONG_MAX;
-               snd_pcm_sframes_t result;
                /* As mentioned in the ALSA API (see pcm/pcm.c:942):
                 * The function #snd_pcm_avail_update()
                 * have to be called before any mmap begin+commit operation.
@@ -487,28 +467,21 @@ snd_pcm_plugin_sync_hw_ptr_capture(snd_pcm_t *pcm,
                 * there is more data available.
                 */
                slave_size = snd_pcm_avail_update(slave);
-               result = snd_pcm_mmap_begin(slave, &slave_areas, &slave_offset, &slave_frames);
-               if (result < 0) {
-                       err = result;
+               err = snd_pcm_mmap_begin(slave, &slave_areas, &slave_offset, &slave_frames);
+               if (err < 0)
                        goto error;
-               }
                if (frames > cont)
                        frames = cont;
                frames = (plugin->read)(pcm, areas, hw_offset, frames,
                                        slave_areas, slave_offset, &slave_frames);
-               result = snd_pcm_mmap_commit(slave, slave_offset, slave_frames);
-               if (result > 0 && (snd_pcm_uframes_t)result != slave_frames) {
-                       snd_pcm_sframes_t res;
-                       res = plugin->undo_read(slave, areas, hw_offset, frames, slave_frames - result);
-                       if (res < 0) {
-                               err = res;
-                               goto error;
-                       }
-                       frames -= res;
-               }
-               if (result <= 0) {
-                       err = result;
+               err = snd_pcm_mmap_commit(slave, slave_offset, slave_frames);
+               if (err < 0)
                        goto error;
+               if ((snd_pcm_uframes_t)err != slave_frames) {
+                       err = plugin->undo_read(slave, areas, hw_offset, frames, slave_frames - err);
+                       if (err < 0)
+                               goto error;
+                       frames -= err;
                }
                snd_pcm_mmap_hw_forward(pcm, frames);
                if (frames == cont)