File 0005-state-stream-fix-crash-in-case-the-Format-has-a-Choice-for.patch of Package wireplumber

From de0bca59023ef1cd655ebf5f944f8fd5952df10e Mon Sep 17 00:00:00 2001
From: George Kiagiadakis <george.kiagiadakis@collabora.com>
Date: Fri, 6 Feb 2026 11:28:34 +0200
Subject: [PATCH] state-stream: fix crash in case the Format has a Choice for
 the number of channels

Fixes: #903
---
 src/scripts/node/state-stream.lua | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/src/scripts/node/state-stream.lua b/src/scripts/node/state-stream.lua
index e2fc7efe..b4537644 100644
--- a/src/scripts/node/state-stream.lua
+++ b/src/scripts/node/state-stream.lua
@@ -348,8 +348,18 @@ function buildDefaultChannelVolumes (node)
   for pod in node:iterate_params("Format") do
     local pod_parsed = pod:parse()
     if pod_parsed ~= nil then
-      channels = pod_parsed.properties.channels
-      break
+      local t = type(pod_parsed.properties.channels)
+      if t == "number" then
+        channels = pod_parsed.properties.channels
+        break
+      else if t == "table" and #pod_parsed.properties.channels > 0 then
+        -- in some misbehaving clients a non-fixed Format may appear here, which means the number of
+        -- channels will be some kind of choice. If this is the case, pick the first number in the
+        -- choice (which is either the default in an enum or range, or may just happen to be the
+        -- right number in other cases)
+        channels = pod_parsed.properties.channels[1]
+        break
+      end
     end
   end
 
-- 
GitLab

openSUSE Build Service is sponsored by