From a9fe2942a09523c248e64d080f8e3b38d3a34f19 Mon Sep 17 00:00:00 2001 From: Steve Bennett Date: Fri, 2 Aug 2013 08:42:11 +1000 Subject: Correct file handler should be deleted Previously, Jim_DeleteFileHandler() would indiscriminately delete the first matching file handler in the list. Instead, it should delete the file handler matching the event mask. Signed-off-by: Steve Bennett --- jim-aio.c | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) (limited to 'jim-aio.c') diff --git a/jim-aio.c b/jim-aio.c index bad87b6..f3efef3 100644 --- a/jim-aio.c +++ b/jim-aio.c @@ -292,16 +292,8 @@ static void JimAioDelProc(Jim_Interp *interp, void *privData) Jim_DecrRefCount(interp, af->filename); #ifdef jim_ext_eventloop - /* remove existing EventHandlers */ - if (af->rEvent) { - Jim_DeleteFileHandler(interp, af->fp); - } - if (af->wEvent) { - Jim_DeleteFileHandler(interp, af->fp); - } - if (af->eEvent) { - Jim_DeleteFileHandler(interp, af->fp); - } + /* remove all existing EventHandlers */ + Jim_DeleteFileHandler(interp, af->fp, JIM_EVENT_READABLE | JIM_EVENT_WRITABLE | JIM_EVENT_EXCEPTION); #endif Jim_Free(af); } @@ -810,7 +802,7 @@ static int aio_eventinfo(Jim_Interp *interp, AioFile * af, unsigned mask, Jim_Ob if (*scriptHandlerObj) { /* Delete old handler */ - Jim_DeleteFileHandler(interp, af->fp); + Jim_DeleteFileHandler(interp, af->fp, mask); *scriptHandlerObj = NULL; } -- cgit v1.1