fix(timeout): drive the inner awaitable's full awaiter protocol#329
Conversation
timeout_awaitable::await_suspend called straight into the inner awaitable's await_suspend without first calling its await_ready. Awaitables that perform setup in await_ready — type-erased stream wrappers construct their cached inner op there — were driven against unconstructed storage, yielding garbage reads or a segfault. Forward await_ready to the inner awaitable so the full protocol reaches it. An already-ready inner op now also completes without suspending or arming the deadline timer.
|
An automated preview of the documentation is available at https://329.corosio.prtest3.cppalliance.org/index.html If more commits are pushed to the pull request, the docs will rebuild at the same URL. 2026-07-24 21:49:35 UTC |
|
GCOVR code coverage report https://329.corosio.prtest3.cppalliance.org/gcovr/index.html Build time: 2026-07-24 22:00:01 UTC |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## develop #329 +/- ##
========================================
Coverage 77.47% 77.47%
========================================
Files 96 96
Lines 6868 6868
Branches 1652 1652
========================================
Hits 5321 5321
Misses 1055 1055
Partials 492 492 Continue to review full report in Codecov by Harness.
🚀 New features to boost your workflow:
|
timeout_awaitable::await_suspend called straight into the inner awaitable's await_suspend without first calling its await_ready. Awaitables that perform setup in await_ready — type-erased stream wrappers construct their cached inner op there — were driven against unconstructed storage, yielding garbage reads or a segfault.
Forward await_ready to the inner awaitable so the full protocol reaches it. An already-ready inner op now also completes without suspending or arming the deadline timer.
Resolves #327.