summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/pulse/format.c13
-rw-r--r--src/pulsecore/sink-input.c3
2 files changed, 9 insertions, 7 deletions
diff --git a/src/pulse/format.c b/src/pulse/format.c
index a1a0981b..b256d72f 100644
--- a/src/pulse/format.c
+++ b/src/pulse/format.c
@@ -193,11 +193,9 @@ pa_bool_t pa_format_info_to_sample_spec(pa_format_info *f, pa_sample_spec *ss, p
if (map) {
pa_channel_map_init(map);
- if (!pa_format_info_get_prop_string(f, PA_PROP_FORMAT_CHANNEL_MAP, &m))
- goto out;
-
- if (m && pa_channel_map_parse(map, m) == NULL)
- goto out;
+ if (pa_format_info_get_prop_string(f, PA_PROP_FORMAT_CHANNEL_MAP, &m))
+ if (pa_channel_map_parse(map, m) == NULL)
+ goto out;
}
ret = TRUE;
@@ -281,7 +279,10 @@ pa_bool_t pa_format_info_get_prop_string(pa_format_info *f, const char *key, cha
pa_assert(key);
pa_assert(v);
- pa_return_val_if_fail(str = pa_proplist_gets(f->plist, key), FALSE);
+ str = pa_proplist_gets(f->plist, key), FALSE;
+ if (!str)
+ return FALSE;
+
o = json_tokener_parse(str);
pa_return_val_if_fail(!is_error(o), FALSE);
if (json_object_get_type(o) != json_type_string) {
diff --git a/src/pulsecore/sink-input.c b/src/pulsecore/sink-input.c
index 300b7286..f4f3258f 100644
--- a/src/pulsecore/sink-input.c
+++ b/src/pulsecore/sink-input.c
@@ -262,7 +262,8 @@ int pa_sink_input_new(
* to using the sample spec and channel map after all decisions w.r.t.
* routing are complete. */
pa_idxset *tmp = pa_idxset_new(NULL, NULL);
- pa_format_info *f = pa_format_info_from_sample_spec(&data->sample_spec, &data->channel_map);
+ pa_format_info *f = pa_format_info_from_sample_spec(&data->sample_spec,
+ data->channel_map_is_set ? &data->channel_map : NULL);
pa_idxset_put(tmp, f, NULL);
pa_sink_input_new_data_set_formats(data, tmp);
}