diff --git a/repos/libports/run/libc_integration.run b/repos/libports/run/libc_integration.run index 02249ab0ba..a529d3523c 100644 --- a/repos/libports/run/libc_integration.run +++ b/repos/libports/run/libc_integration.run @@ -30,7 +30,7 @@ if { [get_cmd_switch --autopilot] } { set run [expr [have_spec nova] || [have_spec hw]] } if {[have_board imx8q_evk]} { - set config_wo 10000 + set config_wo 9000 set run 1 } if {[have_board linux]} { diff --git a/repos/libports/src/test/libc_integration/thread.cc b/repos/libports/src/test/libc_integration/thread.cc index ed1530e5c6..6be17ce6c8 100644 --- a/repos/libports/src/test/libc_integration/thread.cc +++ b/repos/libports/src/test/libc_integration/thread.cc @@ -66,8 +66,14 @@ void *worker_func(void *ptr) data_out.push_back(buf[random()%r_res]); } + if (data_out.size() < bytes_written) { + error("error: worker ", work_info.worker_no, " unexpected state"); + exit(-8); + } + /* write part of response */ - size_t cnt { min(static_cast(work_info.buffer_size), work_info.num_bytes-bytes_written) }; + size_t cnt { min(static_cast(work_info.buffer_size), + data_out.size() - bytes_written) }; ssize_t w_res { write(work_info.pipe_out_fd, data_out.data()+bytes_written, cnt) }; @@ -103,7 +109,9 @@ void *worker_func(void *ptr) /* write remaining output bytes */ while (bytes_written < data_out.size()) { - size_t cnt { min(static_cast(work_info.buffer_size), work_info.num_bytes-bytes_written) }; + size_t cnt { min(static_cast(work_info.buffer_size), + data_out.size() - bytes_written) }; + ssize_t w_res { write(work_info.pipe_out_fd, data_out.data()+bytes_written, cnt) };