X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=blobdiff_plain;f=unix%2Fuxsel.c;h=e2979c9a01e6aed34f27c5f2bf440bb5dd083717;hb=481ebd232e07a644b4ef5d6f1d13edc58a194971;hp=0383faa69d02624c9d459afb046f7d0177705687;hpb=406d2d8a3274bf325f7e356076de8065b5118ad4;p=PuTTY.git 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)