X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/putty/blobdiff_plain/d719927eb175a73b13a7015498e9757010344bf5..b4bc538452c92b6a2f9c935028461f5c774a4f1f:/windows/winsftp.c 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;