pod-builder: move some code around to help gcc 13

Make sure to pop the frame before returning errors to stop gcc13
from complaining with -Wdangling-pointer

Fixes #3171
This commit is contained in:
Wim Taymans 2023-04-20 17:52:27 +02:00
parent 83d2e85f49
commit 0333ddff45
6 changed files with 22 additions and 19 deletions

View file

@ -193,12 +193,12 @@ static int codec_enum_config(const struct media_codec *codec, uint32_t flags,
spa_pod_builder_int(b, f->value);
}
}
if (i == 0)
return -EINVAL;
if (i > 1)
choice->body.type = SPA_CHOICE_Enum;
spa_pod_builder_pop(b, &f[1]);
if (i == 0)
return -EINVAL;
if (SPA_FLAG_IS_SET(conf.channels, AAC_CHANNELS_1 | AAC_CHANNELS_2)) {
spa_pod_builder_add(b,

View file

@ -247,12 +247,13 @@ static int codec_enum_config(const struct media_codec *codec, uint32_t flags,
spa_pod_builder_int(b, 16000);
spa_pod_builder_int(b, 16000);
}
if (i == 0)
return -EINVAL;
if (i > 1)
choice->body.type = SPA_CHOICE_Enum;
spa_pod_builder_pop(b, &f[1]);
if (i == 0)
return -EINVAL;
if (SPA_FLAG_IS_SET(conf.channel_mode, APTX_CHANNEL_MODE_MONO | APTX_CHANNEL_MODE_STEREO)) {
spa_pod_builder_add(b,
SPA_FORMAT_AUDIO_channels, SPA_POD_CHOICE_RANGE_Int(2, 1, 2),

View file

@ -148,11 +148,11 @@ static int codec_enum_config(const struct media_codec *codec, uint32_t flags,
spa_pod_builder_int(b, 44100);
spa_pod_builder_int(b, 44100);
}
if (i == 0)
return -EINVAL;
if (i > 1)
choice->body.type = SPA_CHOICE_Enum;
spa_pod_builder_pop(b, &f[1]);
if (i == 0)
return -EINVAL;
position[0] = SPA_AUDIO_CHANNEL_FL;
position[1] = SPA_AUDIO_CHANNEL_FR;

View file

@ -184,12 +184,13 @@ static int codec_enum_config(const struct media_codec *codec, uint32_t flags,
spa_pod_builder_int(b, 96000);
spa_pod_builder_int(b, 96000);
}
if (i == 0)
return -EINVAL;
if (i > 1)
choice->body.type = SPA_CHOICE_Enum;
spa_pod_builder_pop(b, &f[1]);
if (i == 0)
return -EINVAL;
if (conf.channel_mode & LDACBT_CHANNEL_MODE_MONO &&
conf.channel_mode & (LDACBT_CHANNEL_MODE_STEREO |
LDACBT_CHANNEL_MODE_DUAL_CHANNEL)) {