return TRUE;
}
-static void prepare_enum_names(struct snd_ctl_elem_info *info, const gchar **labels)
+static gboolean prepare_enum_names(struct snd_ctl_elem_info *info, const gchar **labels)
{
unsigned int count;
unsigned int length;
for (count = 0; labels[count] != NULL; ++count) {
const gchar *label = labels[count];
- g_return_if_fail(strlen(label) < 64);
+ g_return_val_if_fail(strlen(label) < 64, FALSE);
length += strlen(label) + 1;
}
- g_return_if_fail(length <= 64 * 1024);
+ g_return_val_if_fail(length <= 64 * 1024, FALSE);
pos = g_malloc0(length);
pos += strlen(label) + 1;
}
info->value.enumerated.items = count;
+
+ return TRUE;
}
static gboolean add_or_replace_elems(int fd, const ALSACtlElemId *elem_id, guint elem_count,
if (!alsactl_elem_info_get_enum_data(elem_info, &labels, error))
return FALSE;
- prepare_enum_names(info, labels);
+ if (!prepare_enum_names(info, labels))
+ return FALSE;
break;
}