* io.c (tprint_iov_upto): If the first element of iovec array is
unreadable, print its address without array markup.
* tests/readv.c (main): Check it.
} else {
abbrev_end = end;
}
- tprints("[");
+ if (addr >= abbrev_end) {
+ tprints("[...]");
+ return;
+ }
for (cur = addr; cur < end; cur += sizeof_iov) {
- if (cur > addr)
+ if (cur > addr) {
tprints(", ");
- if (cur >= abbrev_end) {
- tprints("...");
- break;
+ if (cur >= abbrev_end) {
+ tprints("...");
+ break;
+ }
}
if (umove_ulong_array_or_printaddr(tcp, cur, iov,
ARRAY_SIZE(iov)))
break;
+ if (cur <= addr)
+ tprints("[");
tprints("{");
if (decode_iov) {
unsigned long len = iov[1];
printaddr(iov[0]);
tprintf(", %lu}", iov[1]);
}
- tprints("]");
+ if (cur > addr)
+ tprints("]");
}
void
void *w2 = tail_memdup(w2_c, LENGTH_OF(w2_c));
assert(writev(1, efault, 42) == -1);
- tprintf("writev(1, [%p], 42) = -1 EFAULT (%m)\n", efault);
+ tprintf("writev(1, %p, 42) = -1 EFAULT (%m)\n", efault);
assert(readv(0, efault, 42) == -1);
tprintf("readv(0, %p, 42) = -1 EFAULT (%m)\n", efault);