- From: Raffaele Sena <raff@nuvomedia.com>
- Date: Wed, 15 Dec 1999 16:13:28 -0800
- To: "Sam Couter" <eddie@topic.com.au>, <www-lib@w3.org>
> Short patch, to avoid infinite event loop madness when HTTimer_next() calls
> callbacks that call HTEventLoop_stopLoop().
>
> If someone with CVS write access could check this in, I'd appreciate it.
>
> diff -u -r2.41 HTEvtLst.c
> --- HTEvtLst.c 1999/07/07 15:43:28 2.41
> +++ HTEvtLst.c 1999/12/15 23:32:32
> @@ -664,6 +664,8 @@
> wt = NULL;
> if ((status = HTTimer_next(&timeout)))
> break;
> + if (HTEndLoop)
> + break;
> if (timeout != 0) {
> waittime.tv_sec = timeout / MILLI_PER_SECOND;
> waittime.tv_usec = (timeout % MILLI_PER_SECOND) *
>
Since there is already a check for HTEndLoop at the beginning of the loop:
/* Don't leave this loop until we leave the application */
while (!HTEndLoop) {
/*
** Timeval struct copy needed for linux, as it set the value to the
** remaining timeout while exiting the select. (and perhaps for
** other OS). Code borrowed from X server.
*/
wt = NULL;
if ((status = HTTimer_next(&timeout)))
break;
if (timeout != 0) {
waittime.tv_sec = timeout / MILLI_PER_SECOND;
waittime.tv_usec = (timeout % MILLI_PER_SECOND) *
(1000000 / MILLI_PER_SECOND);
wt = &waittime;
}
...
can you explain me how your change fixes the problem, more that reducing
the time before the HTEndLoop is checked ? Just curious.
-- Raffaele
Received on Thursday, 16 December 1999 00:17:11 UTC