Revise dividing by zero guards

This commit is contained in:
wolfreak99 2017-07-25 00:49:11 -04:00 committed by Michael Steenbeek
parent 150cc90f89
commit 7c6e260f77
1 changed files with 20 additions and 7 deletions

View File

@ -166,9 +166,15 @@ void window_dropdown_show_text_custom_width(sint32 x, sint32 y, sint32 extray, u
_dropdown_item_width = width;
_dropdown_item_height = (flags & DROPDOWN_FLAG_CUSTOM_HEIGHT) ? custom_height : 10;
gDropdownNumItems = (sint32)num_items;
_dropdown_num_columns = (gDropdownNumItems + DROPDOWN_TEXT_MAX_ROWS - 1) / DROPDOWN_TEXT_MAX_ROWS;
_dropdown_num_columns = max(1, _dropdown_num_columns);
_dropdown_num_rows = (gDropdownNumItems + _dropdown_num_columns - 1) / _dropdown_num_columns;
// There must always be at least one column to prevent dividing by zero
if (gDropdownNumItems == 0) {
_dropdown_num_columns = 1;
_dropdown_num_rows = 0;
}
else {
_dropdown_num_columns = (gDropdownNumItems + DROPDOWN_TEXT_MAX_ROWS - 1) / DROPDOWN_TEXT_MAX_ROWS;
_dropdown_num_rows = (gDropdownNumItems + _dropdown_num_columns - 1) / _dropdown_num_columns;
}
// Text dropdowns are listed horizontally
_dropdown_list_vertically = true;
@ -238,10 +244,17 @@ void window_dropdown_show_image(sint32 x, sint32 y, sint32 extray, uint8 colour,
_dropdown_item_width = itemWidth;
_dropdown_item_height = itemHeight;
gDropdownNumItems = numItems;
_dropdown_num_columns = numColumns;
_dropdown_num_rows = gDropdownNumItems / _dropdown_num_columns;
if (gDropdownNumItems % _dropdown_num_columns != 0)
_dropdown_num_rows++;
// There must always be at least one column to prevent dividing by zero
if (gDropdownNumItems == 0) {
_dropdown_num_columns = 1;
_dropdown_num_rows = 0;
}
else {
_dropdown_num_columns = numColumns;
_dropdown_num_rows = gDropdownNumItems / _dropdown_num_columns;
if (gDropdownNumItems % _dropdown_num_columns != 0)
_dropdown_num_rows++;
}
// image dropdowns are listed horizontally
_dropdown_list_vertically = false;