summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2006-04-26 15:37:13 +0000
committerLennart Poettering <lennart@poettering.net>2006-04-26 15:37:13 +0000
commit292b237e356371f827df7a7a0e52a7152b64bfe0 (patch)
tree4b6531389fd1cecd16add7375e23371240d198ec
parent5f7cc0c870ebe77dd457209503f75d65b35b8014 (diff)
don't allow channel positions to be specified twice in the same channelmap
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@801 fefdeb5f-60dc-0310-8127-8f9354f1896f
-rw-r--r--src/polyp/channelmap.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/polyp/channelmap.c b/src/polyp/channelmap.c
index 8d642a06..38349bfa 100644
--- a/src/polyp/channelmap.c
+++ b/src/polyp/channelmap.c
@@ -277,10 +277,19 @@ int pa_channel_map_valid(const pa_channel_map *map) {
if (map->channels <= 0 || map->channels > PA_CHANNELS_MAX)
return 0;
- for (c = 0; c < map->channels; c++)
+ for (c = 0; c < map->channels; c++) {
+ unsigned k;
+
if (map->map[c] < 0 ||map->map[c] >= PA_CHANNEL_POSITION_MAX)
return 0;
+ /* Don't allow positions to be specified twice */
+ for (k = 0; k < c; k++)
+ if (map->map[k] == map->map[c])
+ return 0;
+
+ }
+
return 1;
}