From: ben Date: Wed, 19 Sep 2012 22:17:10 +0000 (+0000) Subject: Windows PSFTP has two places that call run_timers and I'd only updated X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/putty/commitdiff_plain/1172a92b4a579b7d637550b68082b8245dec26c4 Windows PSFTP has two places that call run_timers and I'd only updated one of them. Correct that. git-svn-id: svn://svn.tartarus.org/sgt/putty@9676 cda61777-01e9-0310-a592-d414129be87e --- diff --git a/windows/winsftp.c b/windows/winsftp.c index d4c5fa6e..33acaf62 100644 --- a/windows/winsftp.c +++ b/windows/winsftp.c @@ -611,7 +611,7 @@ int ssh_sftp_loop_iteration(void) if (p_WSAEventSelect == NULL) { fd_set readfds; int ret; - long now = GETTICKCOUNT(); + unsigned long now = GETTICKCOUNT(), then; if (sftp_ssh_socket == INVALID_SOCKET) return -1; /* doom */ @@ -620,13 +620,17 @@ int ssh_sftp_loop_iteration(void) select_result((WPARAM) sftp_ssh_socket, (LPARAM) FD_WRITE); do { - long next, ticks; + unsigned long next; + long ticks; struct timeval tv, *ptv; if (run_timers(now, &next)) { - ticks = next - GETTICKCOUNT(); - if (ticks <= 0) - ticks = 1; /* just in case */ + then = now; + now = GETTICKCOUNT(); + if (now - then > next - then) + ticks = 0; + else + ticks = next - now; tv.tv_sec = ticks / 1000; tv.tv_usec = ticks % 1000 * 1000; ptv = &tv;