From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2155) id A6FC8385E01A; Thu, 26 Mar 2020 11:26:26 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org A6FC8385E01A Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit From: Corinna Vinschen To: cygwin-cvs@sourceware.org Subject: [newlib-cygwin] Cygwin: serial: select: fix previous revamp patch X-Act-Checkin: newlib-cygwin X-Git-Author: =?utf-8?q?=C3=85ke_Rehnman?= X-Git-Refname: refs/heads/master X-Git-Oldrev: 29295995909f0a56081a77e33fd95f34c4af9335 X-Git-Newrev: e4f9fc92ac613f0ae6cf44de7fdd6229c50168e4 Message-Id: <20200326112626.A6FC8385E01A@sourceware.org> Date: Thu, 26 Mar 2020 11:26:26 +0000 (GMT) X-BeenThere: cygwin-cvs@cygwin.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Cygwin core component git logs List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 26 Mar 2020 11:26:26 -0000 https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=e4f9fc92ac613f0ae6cf44de7fdd6229c50168e4 commit e4f9fc92ac613f0ae6cf44de7fdd6229c50168e4 Author: Åke Rehnman Date: Fri Mar 20 10:37:17 2020 +0100 Cygwin: serial: select: fix previous revamp patch - We need a verify function. - The event object referenced in WaitCommEvent must not be a local var, move it into fhandler_serial. Diff: --- winsup/cygwin/fhandler.h | 1 + winsup/cygwin/select.cc | 12 ++++++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/winsup/cygwin/fhandler.h b/winsup/cygwin/fhandler.h index 923313df4..45e256e77 100644 --- a/winsup/cygwin/fhandler.h +++ b/winsup/cygwin/fhandler.h @@ -1685,6 +1685,7 @@ class fhandler_serial: public fhandler_base pid_t pgrp_; int rts; /* for Windows 9x purposes only */ int dtr; /* for Windows 9x purposes only */ + DWORD event; /* for select */ public: OVERLAPPED io_status; diff --git a/winsup/cygwin/select.cc b/winsup/cygwin/select.cc index 93820ae77..e11f5850a 100644 --- a/winsup/cygwin/select.cc +++ b/winsup/cygwin/select.cc @@ -1493,14 +1493,18 @@ serial_read_cleanup (select_record *s, select_stuff *stuff) } } +verify_serial (select_record *me, fd_set *rfds, fd_set *wfds, fd_set *efds) +{ + return peek_serial (me, true); +} + select_record * fhandler_serial::select_read (select_stuff *ss) { - DWORD event; select_record *s = ss->start.next; s->startup = no_startup; - s->verify = verify_ok; + s->verify = verify_serial; s->cleanup = serial_read_cleanup; s->peek = peek_serial; s->read_selected = true; @@ -1521,7 +1525,7 @@ fhandler_serial::select_write (select_stuff *ss) select_record *s = ss->start.next; s->startup = no_startup; - s->verify = verify_ok; + s->verify = verify_serial; s->peek = peek_serial; s->write_selected = true; s->write_ready = true; @@ -1534,7 +1538,7 @@ fhandler_serial::select_except (select_stuff *ss) select_record *s = ss->start.next; s->startup = no_startup; - s->verify = verify_ok; + s->verify = verify_serial; s->peek = peek_serial; s->except_selected = false; // Can't do this s->except_ready = false;