From 707e5e2643ad2e816e347b57c5713fce45e93a5e Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Thu, 4 Jun 2026 21:13:09 +0200 Subject: [PATCH] pulse-server: avoid division by 0 in delay calculation When we are not yet negotiated and the rate is not yet stored in the stream sample spec, use a 0 delay instead of dividing by 0. --- src/modules/module-protocol-pulse/pulse-server.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/modules/module-protocol-pulse/pulse-server.c b/src/modules/module-protocol-pulse/pulse-server.c index 68adcdbf2..31332cc4c 100644 --- a/src/modules/module-protocol-pulse/pulse-server.c +++ b/src/modules/module-protocol-pulse/pulse-server.c @@ -2231,7 +2231,9 @@ static int do_get_playback_latency(struct client *client, uint32_t command, uint if (stream == NULL || stream->type != STREAM_TYPE_PLAYBACK) return -ENOENT; - delay = stream->delay.buffered * SPA_USEC_PER_SEC / stream->ss.rate; + delay = 0; + if (stream->ss.rate > 0) + delay += stream->delay.buffered * SPA_USEC_PER_SEC / stream->ss.rate; if (stream->delay.rate.denom > 0) delay += stream->delay.delay * SPA_USEC_PER_SEC * stream->delay.rate.num / stream->delay.rate.denom; @@ -2288,7 +2290,9 @@ static int do_get_record_latency(struct client *client, uint32_t command, uint32 if (stream == NULL || stream->type != STREAM_TYPE_RECORD) return -ENOENT; - delay = stream->delay.buffered * SPA_USEC_PER_SEC / stream->ss.rate; + delay = 0; + if (stream->ss.rate > 0) + delay += stream->delay.buffered * SPA_USEC_PER_SEC / stream->ss.rate; if (stream->delay.rate.denom > 0) delay += stream->delay.delay * SPA_USEC_PER_SEC * stream->delay.rate.num / stream->delay.rate.denom;