test/run_filter: check for partial writes

This commit is contained in:
Max Kellermann 2019-03-25 08:58:35 +01:00
parent 1d332746af
commit 68bcfd8bf0
1 changed files with 16 additions and 1 deletions

View File

@ -95,6 +95,21 @@ FullRead(FileDescriptor fd, void *_buffer, size_t size)
}
}
static void
FullWrite(FileDescriptor fd, const void *_buffer, size_t size)
{
auto buffer = (const uint8_t *)_buffer;
while (size > 0) {
size_t nbytes = WriteOrThrow(fd, buffer, size);
if (nbytes == 0)
throw std::runtime_error("Premature end of input");
buffer += nbytes;
size -= nbytes;
}
}
static size_t
ReadFrames(FileDescriptor fd, void *_buffer, size_t size, size_t frame_size)
{
@ -163,7 +178,7 @@ try {
break;
auto dest = filter->FilterPCM({(const void *)buffer, (size_t)nbytes});
WriteOrThrow(output_fd, dest.data, dest.size);
FullWrite(output_fd, dest.data, dest.size);
}
/* cleanup and exit */