diff --git a/src/pulse/volume.c b/src/pulse/volume.c index 6b0c4b687..ead541521 100644 --- a/src/pulse/volume.c +++ b/src/pulse/volume.c @@ -477,10 +477,10 @@ pa_cvolume *pa_sw_cvolume_multiply(pa_cvolume *dest, const pa_cvolume *a, const pa_return_val_if_fail(pa_cvolume_valid(a), NULL); pa_return_val_if_fail(pa_cvolume_valid(b), NULL); - for (i = 0; i < a->channels && i < b->channels; i++) - dest->values[i] = pa_sw_volume_multiply(a->values[i], b->values[i]); + dest->channels = PA_MIN(a->channels, b->channels); - dest->channels = (uint8_t) i; + for (i = 0; i < dest->channels; i++) + dest->values[i] = pa_sw_volume_multiply(a->values[i], b->values[i]); return dest; } @@ -512,10 +512,10 @@ pa_cvolume *pa_sw_cvolume_divide(pa_cvolume *dest, const pa_cvolume *a, const pa pa_return_val_if_fail(pa_cvolume_valid(a), NULL); pa_return_val_if_fail(pa_cvolume_valid(b), NULL); - for (i = 0; i < a->channels && i < b->channels; i++) - dest->values[i] = pa_sw_volume_divide(a->values[i], b->values[i]); + dest->channels = PA_MIN(a->channels, b->channels); - dest->channels = (uint8_t) i; + for (i = 0; i < dest->channels; i++) + dest->values[i] = pa_sw_volume_divide(a->values[i], b->values[i]); return dest; } @@ -942,10 +942,10 @@ pa_cvolume* pa_cvolume_merge(pa_cvolume *dest, const pa_cvolume *a, const pa_cvo pa_return_val_if_fail(pa_cvolume_valid(a), NULL); pa_return_val_if_fail(pa_cvolume_valid(b), NULL); - for (i = 0; i < a->channels && i < b->channels; i++) - dest->values[i] = PA_MAX(a->values[i], b->values[i]); + dest->channels = PA_MIN(a->channels, b->channels); - dest->channels = (uint8_t) i; + for (i = 0; i < dest->channels; i++) + dest->values[i] = PA_MAX(a->values[i], b->values[i]); return dest; }