From 7fe191bc1095141631a5ef7bba390011fba43ce3 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Wed, 25 Mar 2026 11:10:50 +0100 Subject: [PATCH] buffers: handle 0 result from Buffers param enumeration Since abf37dbddef96518f7e93f39d910fd4e38cc887b the param enumeration in the client-node can return 0 when the parameter is supported but there are no params uploaded. When negotiating buffers we need to assume a 0 result as a NULL filter as well or else we will error. --- src/pipewire/buffers.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/pipewire/buffers.c b/src/pipewire/buffers.c index db1a01551..ac3911f33 100644 --- a/src/pipewire/buffers.c +++ b/src/pipewire/buffers.c @@ -146,8 +146,11 @@ param_filter(struct pw_buffers *this, if (in_res < 1) { /* in_res == -ENOENT : unknown parameter, assume NULL and we will * exit the loop below. - * in_res < 1 : some error or no data, exit now + * in_res == 0 : no data, assume NULL + * in_res < 0 : some error, exit now */ + if (in_res == 0) + in_res = -ENOENT; if (in_res == -ENOENT) iparam = NULL; else @@ -163,6 +166,8 @@ param_filter(struct pw_buffers *this, id, &oidx, iparam, &oparam, result); /* out_res < 1 : no value or error, exit now */ + if (out_res == 0) + out_res = -ENOENT; if (out_res < 1) break;