From a442dda19ce7fec8763f29e3424b5e32c3d112cc Mon Sep 17 00:00:00 2001 From: Dave Davenport Date: Sun, 10 Sep 2017 19:55:14 +0200 Subject: Fix combi modi crashing on dynamic list sizes. --- source/dialogs/combi.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/source/dialogs/combi.c b/source/dialogs/combi.c index 5631c519..a41e54e6 100644 --- a/source/dialogs/combi.c +++ b/source/dialogs/combi.c @@ -125,7 +125,14 @@ static int combi_mode_init ( Mode *sw ) static unsigned int combi_mode_get_num_entries ( const Mode *sw ) { const CombiModePrivateData *pd = (const CombiModePrivateData *) mode_get_private_data ( sw ); - return pd->cmd_list_length; + unsigned int length = 0; + for ( unsigned int i = 0; i < pd->num_switchers; i++ ) { + unsigned int entries = mode_get_num_entries ( pd->switchers[i].mode ); + pd->starts[i] = length; + pd->lengths[i] = entries; + length+=entries; + } + return length; } static void combi_mode_destroy ( Mode *sw ) { -- cgit v1.2.3