emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] /srv/bzr/emacs/emacs-24 r111257: Cleanup related to bug #1


From: Eli Zaretskii
Subject: [Emacs-diffs] /srv/bzr/emacs/emacs-24 r111257: Cleanup related to bug #13546 with subprocesses on MS-Windows.
Date: Wed, 13 Feb 2013 19:00:26 +0200
User-agent: Bazaar (2.5.0)

------------------------------------------------------------
revno: 111257
fixes bug: http://debbugs.gnu.org/13546
committer: Eli Zaretskii <address@hidden>
branch nick: emacs-24
timestamp: Wed 2013-02-13 19:00:26 +0200
message:
  Cleanup related to bug #13546 with subprocesses on MS-Windows.
  
   src/w32.c (sys_pipe): When failing due to file descriptors above
   MAXDESC, set errno to EMFILE.
   (_sys_read_ahead): Update cp->status when failing to read serial
   communications input, so that the status doesn't stay at
   STATUS_READ_IN_PROGRESS.
modified:
  src/ChangeLog
  src/w32.c
=== modified file 'src/ChangeLog'
--- a/src/ChangeLog     2013-02-13 04:26:43 +0000
+++ b/src/ChangeLog     2013-02-13 17:00:26 +0000
@@ -1,3 +1,11 @@
+2013-02-13  Eli Zaretskii  <address@hidden>
+
+       * w32.c (sys_pipe): When failing due to file descriptors above
+       MAXDESC, set errno to EMFILE.
+       (_sys_read_ahead): Update cp->status when failing to read serial
+       communications input, so that the status doesn't stay at
+       STATUS_READ_IN_PROGRESS.  (Bug#13546)
+
 2013-02-13  Glenn Morris  <address@hidden>
 
        * keyboard.c (input-decode-map, key-translation-map): Doc fixes.

=== modified file 'src/w32.c'
--- a/src/w32.c 2013-01-27 08:04:16 +0000
+++ b/src/w32.c 2013-02-13 17:00:26 +0000
@@ -6209,6 +6209,7 @@
        {
          _close (phandles[0]);
          _close (phandles[1]);
+         errno = EMFILE;
          rc = -1;
        }
       else
@@ -6281,19 +6282,31 @@
 
       /* Configure timeouts for blocking read.  */
       if (!GetCommTimeouts (hnd, &ct))
-       return STATUS_READ_ERROR;
+       {
+         cp->status = STATUS_READ_ERROR;
+         return STATUS_READ_ERROR;
+       }
       ct.ReadIntervalTimeout           = 0;
       ct.ReadTotalTimeoutMultiplier    = 0;
       ct.ReadTotalTimeoutConstant      = 0;
       if (!SetCommTimeouts (hnd, &ct))
-       return STATUS_READ_ERROR;
+       {
+         cp->status = STATUS_READ_ERROR;
+         return STATUS_READ_ERROR;
+       }
 
       if (!ReadFile (hnd, &cp->chr, sizeof (char), (DWORD*) &rc, ovl))
        {
          if (GetLastError () != ERROR_IO_PENDING)
-           return STATUS_READ_ERROR;
+           {
+             cp->status = STATUS_READ_ERROR;
+             return STATUS_READ_ERROR;
+           }
          if (!GetOverlappedResult (hnd, ovl, (DWORD*) &rc, TRUE))
-           return STATUS_READ_ERROR;
+           {
+             cp->status = STATUS_READ_ERROR;
+             return STATUS_READ_ERROR;
+           }
        }
     }
   else if (fd_info[fd].flags & FILE_SOCKET)


reply via email to

[Prev in Thread] Current Thread [Next in Thread]