diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2005-06-30 17:00:10 +0000 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2005-06-30 17:00:10 +0000 |
commit | f2abf3173b6993f20f3133372600a17dff607298 (patch) | |
tree | 8dbe66b4ca7b62b504ef1cc902f015071ddefa55 /winsup | |
parent | 5b3e1f7358338fa4fe7223fb34df9a06fda7e97c (diff) | |
download | newlib-f2abf3173b6993f20f3133372600a17dff607298.zip newlib-f2abf3173b6993f20f3133372600a17dff607298.tar.gz newlib-f2abf3173b6993f20f3133372600a17dff607298.tar.bz2 |
* fhandler.cc (fhandler_base::readv): Use malloc/free instead of alloca.
(fhandler_base::writev): Ditto.
Diffstat (limited to 'winsup')
-rw-r--r-- | winsup/cygwin/ChangeLog | 5 | ||||
-rw-r--r-- | winsup/cygwin/fhandler.cc | 10 |
2 files changed, 11 insertions, 4 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 78d4fd7..dfb8148 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,8 @@ +2005-06-30 Corinna Vinschen <corinna@vinschen.de> + + * fhandler.cc (fhandler_base::readv): Use malloc/free instead of alloca. + (fhandler_base::writev): Ditto. + 2005-06-29 Christopher Faylor <cgf@timesys.com> * cygerrno.h: Make multi-inclusion safe. diff --git a/winsup/cygwin/fhandler.cc b/winsup/cygwin/fhandler.cc index 2f03400..e5e08b0 100644 --- a/winsup/cygwin/fhandler.cc +++ b/winsup/cygwin/fhandler.cc @@ -970,7 +970,7 @@ fhandler_base::readv (const struct iovec *const iov, const int iovcnt, if (!len) return 0; - char *buf = (char *) alloca (tot); + char *buf = (char *) malloc (tot); if (!buf) { @@ -992,6 +992,7 @@ fhandler_base::readv (const struct iovec *const iov, const int iovcnt, nbytes -= frag; } + free (buf); return len; } @@ -1022,7 +1023,7 @@ fhandler_base::writev (const struct iovec *const iov, const int iovcnt, if (tot == 0) return 0; - char *const buf = (char *) alloca (tot); + char *const buf = (char *) malloc (tot); if (!buf) { @@ -1042,8 +1043,9 @@ fhandler_base::writev (const struct iovec *const iov, const int iovcnt, iovptr += 1; nbytes -= frag; } - - return write (buf, tot); + ssize_t ret = write (buf, tot); + free (buf); + return ret; } _off64_t |