summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/run_filter.cxx17
1 files changed, 16 insertions, 1 deletions
diff --git a/test/run_filter.cxx b/test/run_filter.cxx
index 481400e97..5a0155802 100644
--- a/test/run_filter.cxx
+++ b/test/run_filter.cxx
@@ -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 */