io.c: fix compilation when IOV_MAX is not defined
GNU/Hurd has writev(2) but does not define IOV_MAX [ruby-core:87417] [Bug #14827] Reported-by: Paul Sonnenschein git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63576 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
e1e61c5b60
commit
894628ac02
12
io.c
12
io.c
@ -1626,6 +1626,16 @@ io_fwritev(int argc, VALUE *argv, rb_io_t *fptr)
|
|||||||
|
|
||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
iovcnt_ok(int iovcnt)
|
||||||
|
{
|
||||||
|
#ifdef IOV_MAX
|
||||||
|
return iovcnt < IOV_MAX;
|
||||||
|
#else /* GNU/Hurd has writev, but no IOV_MAX */
|
||||||
|
return 1;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
#endif /* HAVE_WRITEV */
|
#endif /* HAVE_WRITEV */
|
||||||
|
|
||||||
static VALUE
|
static VALUE
|
||||||
@ -1649,7 +1659,7 @@ io_writev(int argc, VALUE *argv, VALUE io)
|
|||||||
|
|
||||||
for (i = 0; i < argc; i += cnt) {
|
for (i = 0; i < argc; i += cnt) {
|
||||||
#ifdef HAVE_WRITEV
|
#ifdef HAVE_WRITEV
|
||||||
if ((fptr->mode & (FMODE_SYNC|FMODE_TTY)) && ((cnt = argc - i) < IOV_MAX)) {
|
if ((fptr->mode & (FMODE_SYNC|FMODE_TTY)) && iovcnt_ok(cnt = argc - i)) {
|
||||||
n = io_fwritev(cnt, &argv[i], fptr);
|
n = io_fwritev(cnt, &argv[i], fptr);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
Loading…
x
Reference in New Issue
Block a user