Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Faylor <me@cgf.cx>2001-11-15 06:25:52 +0300
committerChristopher Faylor <me@cgf.cx>2001-11-15 06:25:52 +0300
commite2b3dc25804ce3688ac69a7249323e90ae82305e (patch)
tree0588c2572c4379a84a5c356639f8d6d85984753c
parentd590035529cb51a0c1981ae9aff69e92d8755d6e (diff)
* exceptions.cc: Add stdlib.h include for alloca declaration.
* poll.cc: Ditto. * termios.cc: Ditto. * syscalls.cc (_write): Only allow zero length when fd is valid.
-rw-r--r--winsup/cygwin/ChangeLog12
-rw-r--r--winsup/cygwin/exceptions.cc1
-rw-r--r--winsup/cygwin/poll.cc1
-rw-r--r--winsup/cygwin/syscalls.cc16
-rw-r--r--winsup/cygwin/termios.cc1
5 files changed, 24 insertions, 7 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index 61a68933b..9c5fa545e 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,7 +1,17 @@
+2001-11-14 Christopher Faylor <cgf@redhat.com>
+
+ * exceptions.cc: Add stdlib.h include for alloca declaration.
+ * poll.cc: Ditto.
+ * termios.cc: Ditto.
+
+2001-11-14 Christopher Faylor <cgf@redhat.com>
+
+ * syscalls.cc (_write): Only allow zero length when fd is valid.
+
2001-11-14 Corinna Vinschen <corinna@vinschen.de>
* fhandler.cc (fhandler_disk_file::fstat): Add setting access time
- and creation time to last modification time for files on filesystems
+ and creation time to last modification time for files on filesystems
not supporting multiple timestamps.
(fhandler_disk_file::fstat_helper): Set access time and creation
time in incoming Windows structure instead of in stat buf to avoid
diff --git a/winsup/cygwin/exceptions.cc b/winsup/cygwin/exceptions.cc
index 560eab43c..41a1319db 100644
--- a/winsup/cygwin/exceptions.cc
+++ b/winsup/cygwin/exceptions.cc
@@ -11,6 +11,7 @@ details. */
#include "winsup.h"
#include <imagehlp.h>
#include <errno.h>
+#include <stdlib.h>
#include "exceptions.h"
#include "sync.h"
diff --git a/winsup/cygwin/poll.cc b/winsup/cygwin/poll.cc
index 76f8c35dd..8b73c5afd 100644
--- a/winsup/cygwin/poll.cc
+++ b/winsup/cygwin/poll.cc
@@ -12,6 +12,7 @@
#include <sys/time.h>
#include <sys/poll.h>
#include <errno.h>
+#include <stdlib.h>
#include "security.h"
#include "fhandler.h"
#include "path.h"
diff --git a/winsup/cygwin/syscalls.cc b/winsup/cygwin/syscalls.cc
index 848e0e44f..d0896169b 100644
--- a/winsup/cygwin/syscalls.cc
+++ b/winsup/cygwin/syscalls.cc
@@ -355,12 +355,6 @@ _read (int fd, void *ptr, size_t len)
extern "C" ssize_t
_write (int fd, const void *ptr, size_t len)
{
- if (len == 0)
- return 0;
-
- if (__check_invalid_read_ptr_errno (ptr, len))
- return -1;
-
int res = -1;
sigframe thisframe (mainthread);
@@ -368,6 +362,16 @@ _write (int fd, const void *ptr, size_t len)
if (cfd < 0)
goto done;
+ /* No further action required for len == 0 */
+ if (len == 0)
+ {
+ res = 0;
+ goto done;
+ }
+
+ if (len && __check_invalid_read_ptr_errno (ptr, len))
+ goto done;
+
/* Could block, so let user know we at least got here. */
if (fd == 1 || fd == 2)
paranoid_printf ("write (%d, %p, %d)", fd, ptr, len);
diff --git a/winsup/cygwin/termios.cc b/winsup/cygwin/termios.cc
index f5d775fae..499072f51 100644
--- a/winsup/cygwin/termios.cc
+++ b/winsup/cygwin/termios.cc
@@ -14,6 +14,7 @@ details. */
#include "winsup.h"
#include <errno.h>
#include <signal.h>
+#include <stdlib.h>
#include "cygerrno.h"
#include "security.h"
#include "fhandler.h"