curses static analyzer bits
This is mostly just adding some Null guards ahead of code that was already dereferencing pointers, so there should be no change in behavior. Also adds one validation of an array index that was drawing a complaint.
This commit is contained in:
@@ -1078,16 +1078,16 @@ menu_win_size(nhmenu *menu)
|
||||
|
||||
/* Possibly reduce height if only 1 page */
|
||||
if (!menu_is_multipage(menu, maxwidth, maxheight)) {
|
||||
menu_item_ptr = menu->entries;
|
||||
if ((menu_item_ptr = menu->entries) != 0) {
|
||||
while (menu_item_ptr->next_item != NULL) {
|
||||
menu_item_ptr = menu_item_ptr->next_item;
|
||||
}
|
||||
|
||||
while (menu_item_ptr->next_item != NULL) {
|
||||
menu_item_ptr = menu_item_ptr->next_item;
|
||||
}
|
||||
lastline = (menu_item_ptr->line_num) + menu_item_ptr->num_lines;
|
||||
|
||||
lastline = (menu_item_ptr->line_num) + menu_item_ptr->num_lines;
|
||||
|
||||
if (lastline < maxheight) {
|
||||
maxheight = lastline;
|
||||
if (lastline < maxheight) {
|
||||
maxheight = lastline;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -947,8 +947,8 @@ mesg_add_line(const char *mline)
|
||||
++num_messages;
|
||||
} else {
|
||||
/* at capacity; old head is being removed */
|
||||
first_mesg = first_mesg->next_mesg; /* new head */
|
||||
first_mesg->prev_mesg = NULL; /* head has no prev_mesg */
|
||||
if ((first_mesg = first_mesg->next_mesg) != 0) /* new head */
|
||||
first_mesg->prev_mesg = NULL; /* head has no prev_mesg */
|
||||
}
|
||||
/* since 'current_mesg' might be reusing 'first_mesg' and has now
|
||||
become 'last_mesg', this update must be after head replacement */
|
||||
@@ -1056,7 +1056,8 @@ curses_putmsghistory(const char *msg, boolean restoring_msghist)
|
||||
however, we aren't only called when restoring history;
|
||||
core uses putmsghistory() for other stuff during play
|
||||
and those messages should have a normal turn value */
|
||||
last_mesg->turn = restoring_msghist ? (1L << 3) : gh.hero_seq;
|
||||
if (last_mesg) /* appease static analyzer */
|
||||
last_mesg->turn = restoring_msghist ? (1L << 3) : gh.hero_seq;
|
||||
#ifdef DUMPLOG
|
||||
dumplogmsg(last_mesg->str);
|
||||
#endif
|
||||
@@ -1072,18 +1073,20 @@ curses_putmsghistory(const char *msg, boolean restoring_msghist)
|
||||
stashed messages as newly occurring ones is much simpler;
|
||||
we ignore the backlinks because the list is destroyed as it
|
||||
gets processed hence there can't be any other traversals */
|
||||
mesg = stash_head;
|
||||
stash_head = mesg->next_mesg;
|
||||
--stash_count;
|
||||
mesg_turn = mesg->turn;
|
||||
mesg_add_line(mesg->str);
|
||||
/* added line became new tail */
|
||||
last_mesg->turn = mesg_turn;
|
||||
if ((mesg = stash_head) != 0) {
|
||||
stash_head = mesg->next_mesg;
|
||||
--stash_count;
|
||||
mesg_turn = mesg->turn;
|
||||
mesg_add_line(mesg->str);
|
||||
/* added line became new tail */
|
||||
if (last_mesg) /* appease static analyzer */
|
||||
last_mesg->turn = mesg_turn;
|
||||
#ifdef DUMPLOG
|
||||
dumplogmsg(mesg->str);
|
||||
dumplogmsg(mesg->str);
|
||||
#endif
|
||||
free((genericptr_t) mesg->str);
|
||||
free((genericptr_t) mesg);
|
||||
free((genericptr_t) mesg->str);
|
||||
free((genericptr_t) mesg);
|
||||
}
|
||||
}
|
||||
initd = FALSE; /* reset */
|
||||
}
|
||||
|
||||
@@ -397,6 +397,7 @@ curses_str_remainder(const char *str, int width, int line_num)
|
||||
if (last_space == 0) { /* No spaces found */
|
||||
last_space = count - 1;
|
||||
}
|
||||
assert(IndexOk(last_space, substr));
|
||||
if (substr[last_space] == '\0') {
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user