cedric pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=73823ac7b058fb9304cf2d6e9a29c04c92e1d2f3
commit 73823ac7b058fb9304cf2d6e9a29c04c92e1d2f3 Author: michelle legrand <michelle.legr...@openwide.fr> Date: Fri Feb 27 15:18:47 2015 +0100 eio: fix segmentation fault on eio_monitor for win32 api @fix Signed-off-by: Cedric BAIL <ced...@osg.samsung.com> --- src/lib/eio/eio_monitor_win32.c | 34 ++++++++++++++++++++++++---------- 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/src/lib/eio/eio_monitor_win32.c b/src/lib/eio/eio_monitor_win32.c index d092802..06a5f0c 100644 --- a/src/lib/eio/eio_monitor_win32.c +++ b/src/lib/eio/eio_monitor_win32.c @@ -158,8 +158,11 @@ _eio_monitor_win32_cb(void *data, Ecore_Win32_Handler *wh EINA_UNUSED) break; } - if (event >= 0) - _eio_monitor_send(w->monitor, name, event); + if (w->monitor) + { + if ((event >= 0) && (event != EIO_MONITOR_ERROR)) + _eio_monitor_send(w->monitor, name, event); + } free(name); @@ -178,14 +181,25 @@ _eio_monitor_win32_cb(void *data, Ecore_Win32_Handler *wh EINA_UNUSED) else filter |= FILE_NOTIFY_CHANGE_DIR_NAME; - ReadDirectoryChangesW(w->handle, - (LPVOID)w->buffer, - EIO_MONITOR_WIN32_BUFFER_SIZE, - FALSE, - filter, - &w->buf_length, - &w->overlapped, - NULL); + if (!ReadDirectoryChangesW(w->handle, + (LPVOID)w->buffer, + EIO_MONITOR_WIN32_BUFFER_SIZE, + FALSE, + filter, + &w->buf_length, + &w->overlapped, + NULL)) + { + char *msg; + + msg = evil_last_error_get(); + if (msg) + { + ERR("%s", msg); + free(msg); + } + return ECORE_CALLBACK_CANCEL; + } return ECORE_CALLBACK_RENEW; } --