X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=blobdiff_plain;f=unix%2Fuxsel.c;h=ef25cdb574e2a6cf7fe4bb95112be1e05e52b947;hb=8d48caa849907d6737fbdaee5fc49907beb899c2;hp=e2979c9a01e6aed34f27c5f2bf440bb5dd083717;hpb=865b6b404d34f8eec5d3a3abccb8e38271bef6a6;p=PuTTY.git diff --git a/unix/uxsel.c b/unix/uxsel.c index e2979c9a..ef25cdb5 100644 --- a/unix/uxsel.c +++ b/unix/uxsel.c @@ -19,7 +19,7 @@ struct fd { int fd; int rwx; /* 4=except 2=write 1=read */ uxsel_callback_fn callback; - int id; /* for uxsel_input_remove */ + uxsel_id *id; /* for uxsel_input_remove */ }; static tree234 *fds; @@ -64,6 +64,8 @@ void uxsel_set(int fd, int rwx, uxsel_callback_fn callback) { struct fd *newfd; + assert(fd >= 0); + uxsel_del(fd); if (rwx) { @@ -80,7 +82,8 @@ void uxsel_del(int fd) { struct fd *oldfd = find234(fds, &fd, uxsel_fd_findcmp); if (oldfd) { - uxsel_input_remove(oldfd->id); + if (oldfd->id) + uxsel_input_remove(oldfd->id); del234(fds, oldfd); sfree(oldfd); }