diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/windows/identity/ui/credwnd.c | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/src/windows/identity/ui/credwnd.c b/src/windows/identity/ui/credwnd.c index 62c69668c..0d3f17fe5 100644 --- a/src/windows/identity/ui/credwnd.c +++ b/src/windows/identity/ui/credwnd.c @@ -1239,11 +1239,21 @@ cw_timer_proc(HWND hwnd, FILETIME ft_now; o = (khui_credwnd_outline *) r->data; -#ifdef DEBUG - assert(r->flags & KHUI_CW_ROW_EXPVIEW); - assert(o->attr_id == KCDB_ATTR_ID); - assert(tbl->flags & KHUI_CW_TBL_EXPIDENT); -#endif + + /* we only handle timers for header rows if : + + 1. The table is displaying expanded identity information + 2. The row displaying an expanded view + 3. The relevant outline object is for an identity + + If these conditions aren't met, it is because we lost a + race killing this timer while switching modes. + */ + if (!(tbl->flags & KHUI_CW_TBL_EXPIDENT) || + !(r->flags & KHUI_CW_ROW_EXPVIEW) || + !(o->attr_id == KCDB_ATTR_ID)) + + return; nflags = cw_get_buf_exp_flags(tbl, (khm_handle) o->data); if ((o->flags & CW_EXPSTATE_MASK) != nflags) { |
