diff --git a/glfw/wl_window.c b/glfw/wl_window.c index f7ed769f3..e5a27f5af 100644 --- a/glfw/wl_window.c +++ b/glfw/wl_window.c @@ -2536,6 +2536,7 @@ _glfwPlatformReadAvailableDropData(GLFWwindow *w, GLFWDropEvent *ev, char *buffe if (offer->requested_drop_data[o].fd == fd) { ssize_t ret; do { ret = read(fd, buffer, sz); } while (ret < 0 && errno == EINTR); + if (ret <= 0) removeWatch(&_glfw.wl.eventLoopData, offer->requested_drop_data[o].watch_id); return ret < 0 ? -errno : ret; } }