On Sat, 22 Apr 2006 14:04:48 -0700, "Niels Provos"
<[EMAIL PROTECTED]> said:
> Bug reports work the best if their are accompanied by patches and a
> unittest that proves them.
Ok, here they are.
Mind you, I have no idea what the contracts are with internal events,
so I have no idea whether this is a suitable patch or not.
--------- test-base_free.c ---------
#include <time.h>
#include <sys/time.h>
#include <sys/types.h>
#include "event.h"
void write_handler(int fd, short evtype, void* arg) {
}
main() {
void* base = event_init();
struct timeval tv = {1, 0};
struct event ev;
event_set(&ev, 1, EV_WRITE|EV_PERSIST, write_handler, 0);
event_add(&ev, &tv);
event_dispatch();
event_del(&ev);
event_base_free((struct event_base*)base);
}
--------------- patch --------------
Index: event.c
===================================================================
RCS file: /cvsroot/levent/libevent/event.c,v
retrieving revision 1.49
diff -r1.49 event.c
210c210,222
< assert(TAILQ_EMPTY(&base->eventqueue));
---
>
> {
> struct event* ev;
> TAILQ_FOREACH(ev, &base->eventqueue, ev_next) {
> if (ev->ev_flags & EVLIST_INTERNAL) {
> event_msgx("still an internal event on the eventqueue");
> }
> else {
> event_errx(1, "there is a non-internal event still in the
> eventqueue");
> assert(TAILQ_EMPTY(&base->eventqueue));
> }
> }
> }
-mda
> On 4/22/06, Mark D. Anderson <[EMAIL PROTECTED]> wrote:
> > in event.c cvs, in event_base_free there is:
> > assert(TAILQ_EMPTY(&base->eventqueue));
> >
> > this assert fails, because there is typically still the internal event
> > ev_signal from signal.c still on the queue.
> > Right now, there is nothing the outside programmer can do about that,
> > as far as i can see -- it is a file static variable, and the file
> > signal.c
> > never does anything but event_add on it, never event_del.
> >
> > -mda
> >
> > _______________________________________________
> > Libevent-users mailing list
> > [email protected]
> > http://monkey.org/mailman/listinfo/libevent-users
> >
> >
_______________________________________________
Libevent-users mailing list
[email protected]
http://monkey.org/mailman/listinfo/libevent-users