diff --git a/unix/gtkwin.c b/unix/gtkwin.c index c615367a..3743672a 100644 --- a/unix/gtkwin.c +++ b/unix/gtkwin.c @@ -2695,15 +2695,12 @@ int uxsel_input_add(int fd, int rwx) { if (rwx & 1) flags |= GDK_INPUT_READ; if (rwx & 2) flags |= GDK_INPUT_WRITE; if (rwx & 4) flags |= GDK_INPUT_EXCEPTION; - if (flags) - return gdk_input_add(fd, flags, fd_input_func, NULL); - else - return -1; + assert(flags); + return gdk_input_add(fd, flags, fd_input_func, NULL); } void uxsel_input_remove(int id) { - if (id > 0) - gdk_input_remove(id); + gdk_input_remove(id); } char *guess_derived_font_name(GdkFont *font, int bold, int wide) diff --git a/unix/uxsel.c b/unix/uxsel.c index 0383faa6..e2979c9a 100644 --- a/unix/uxsel.c +++ b/unix/uxsel.c @@ -62,22 +62,18 @@ void uxsel_init(void) void uxsel_set(int fd, int rwx, uxsel_callback_fn callback) { - struct fd *newfd = snew(struct fd); - struct fd *oldfd; + struct fd *newfd; - newfd->fd = fd; - newfd->rwx = rwx; - newfd->callback = callback; + uxsel_del(fd); - oldfd = find234(fds, newfd, NULL); - if (oldfd) { - uxsel_input_remove(oldfd->id); - del234(fds, oldfd); - sfree(oldfd); + if (rwx) { + newfd = snew(struct fd); + newfd->fd = fd; + newfd->rwx = rwx; + newfd->callback = callback; + newfd->id = uxsel_input_add(fd, rwx); + add234(fds, newfd); } - - add234(fds, newfd); - newfd->id = uxsel_input_add(fd, rwx); } void uxsel_del(int fd)