diff options
author | Dave Davenport <qball@gmpclient.org> | 2019-07-06 17:04:17 +0200 |
---|---|---|
committer | Dave Davenport <qball@gmpclient.org> | 2019-07-06 17:04:17 +0200 |
commit | 209fb9be18745d9fbf555837210ee9e300615b44 (patch) | |
tree | c3451bde388687da0fa290f2432bc94d26fbb864 | |
parent | aa9970fa2a33439effbf7709d96b508810bf043a (diff) |
[Script|Combi] Fix compilation warning about mixing singed and unsigned.
-rw-r--r-- | source/dialogs/dmenu.c | 16 | ||||
-rw-r--r-- | source/dialogs/script.c | 15 |
2 files changed, 23 insertions, 8 deletions
diff --git a/source/dialogs/dmenu.c b/source/dialogs/dmenu.c index 3dd086ad..67a386b3 100644 --- a/source/dialogs/dmenu.c +++ b/source/dialogs/dmenu.c @@ -241,21 +241,29 @@ static gchar * dmenu_format_output_string ( const DmenuModePrivateData *pd, cons return retv ? retv : g_strdup ( "" ); } +inline unsigned int get_index ( unsigned int length, int index ) +{ + if ( index >= 0 ) return index; + if ( ((unsigned int)-index) <= length ) return (length+index); + // Out of range. + return UINT_MAX; +} + static char *get_display_data ( const Mode *data, unsigned int index, int *state, G_GNUC_UNUSED GList **list, int get_entry ) { Mode *sw = (Mode *) data; DmenuModePrivateData *pd = (DmenuModePrivateData *) mode_get_private_data ( sw ); DmenuScriptEntry *retv = (DmenuScriptEntry *) pd->cmd_list; for ( unsigned int i = 0; i < pd->num_active_list; i++ ) { - unsigned int start = pd->active_list[i].start >= 0 ? pd->active_list[i].start : pd->cmd_list_length + pd->active_list[i].start; - unsigned int stop = pd->active_list[i].stop >= 0 ? pd->active_list[i].stop : pd->cmd_list_length + pd->active_list[i].stop; + unsigned int start = get_index ( pd->cmd_list_length, pd->active_list[i].start ); + unsigned int stop = get_index ( pd->cmd_list_length, pd->active_list[i].stop ); if ( index >= start && index <= stop ) { *state |= ACTIVE; } } for ( unsigned int i = 0; i < pd->num_urgent_list; i++ ) { - unsigned int start = pd->urgent_list[i].start >= 0 ? pd->urgent_list[i].start : pd->cmd_list_length + pd->urgent_list[i].start; - unsigned int stop = pd->urgent_list[i].stop >= 0 ? pd->urgent_list[i].stop : pd->cmd_list_length + pd->urgent_list[i].stop; + unsigned int start = get_index ( pd->cmd_list_length, pd->urgent_list[i].start ); + unsigned int stop = get_index ( pd->cmd_list_length, pd->urgent_list[i].stop ); if ( index >= start && index <= stop ) { *state |= URGENT; } diff --git a/source/dialogs/script.c b/source/dialogs/script.c index ac526052..df8fb0c6 100644 --- a/source/dialogs/script.c +++ b/source/dialogs/script.c @@ -291,19 +291,26 @@ static void script_mode_destroy ( Mode *sw ) sw->private_data = NULL; } } +inline unsigned int get_index ( unsigned int length, int index ) +{ + if ( index >= 0 ) return index; + if ( ((unsigned int)-index) <= length ) return (length+index); + // Out of range. + return UINT_MAX; +} static char *_get_display_value ( const Mode *sw, unsigned int selected_line, G_GNUC_UNUSED int *state, G_GNUC_UNUSED GList **list, int get_entry ) { ScriptModePrivateData *pd = sw->private_data; for ( unsigned int i = 0; i < pd->num_active_list; i++ ) { - unsigned int start = pd->active_list[i].start >= 0 ? pd->active_list[i].start : pd->cmd_list_length + pd->active_list[i].start; - unsigned int stop = pd->active_list[i].stop >= 0 ? pd->active_list[i].stop : pd->cmd_list_length + pd->active_list[i].stop; + unsigned int start = get_index ( pd->cmd_list_length, pd->active_list[i].start ); + unsigned int stop = get_index ( pd->cmd_list_length, pd->active_list[i].stop ); if ( selected_line >= start && selected_line <= stop ) { *state |= ACTIVE; } } for ( unsigned int i = 0; i < pd->num_urgent_list; i++ ) { - unsigned int start = pd->urgent_list[i].start >= 0 ? pd->urgent_list[i].start : pd->cmd_list_length + pd->urgent_list[i].start; - unsigned int stop = pd->urgent_list[i].stop >= 0 ? pd->urgent_list[i].stop : pd->cmd_list_length + pd->urgent_list[i].stop; + unsigned int start = get_index ( pd->cmd_list_length, pd->urgent_list[i].start ); + unsigned int stop = get_index ( pd->cmd_list_length, pd->urgent_list[i].stop ); if ( selected_line >= start && selected_line <= stop ) { *state |= URGENT; } |