google-apis-core: CompositeIO does not maintain the IO read contract
@torreypayne is already working on this.
Since Sep 22, 2026.
Assessment
This issue has not been assessed yet.
Description
Google::Apis::Core::CompositeIO currently leaves pos unchanged after reads, returns nil for read(0), and decrements remaining length by character count rather than byte count. This diverges from the IO contract and misaccounts multibyte data.
A focused candidate:
- returns an empty buffer for zero-length reads,
- rejects negative lengths,
- advances
posand remaining length bybytesize.
The focused contract model and 18 targeted examples pass; the cumulative core suite is 509 examples / 0 failures on Ruby 4.0.6. PR #18722 also touches CompositeIO, but only for frozen-string compatibility already present in current source; it does not address these semantics.
I have a minimal patch ready and can submit it after maintainer acceptance per CONTRIBUTING. The source audit and candidate preparation used AI assistance; I reviewed and verified the result.
- Dominant language
- Ruby
- Stars
- 2.9k
- Forks
- 888
- Avg merge
- 8m
- Merged PRs (30d)
- 241
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from googleapis/google-api-ruby-client
-
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
googleapis/google-api-ruby-client#28001 · 5 reactions ·
-
googleapis/google-api-ruby-client#27757 · 1 assignee ·
-
googleapis/google-api-ruby-client#27759 · 1 assignee ·
-
api: storage type: feature request
Difficulty 3/5 1-2 days Newbie friendliness 55/100
googleapis/google-api-ruby-client#27339 ·
-
Difficulty 3/5 1-2 days Newbie friendliness 62/100
googleapis/google-api-ruby-client#26399 ·
All issues in googleapis/google-api-ruby-client
Similar issues
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
hanami/hanami-cli#449 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
resque/resque-scheduler#826 ·
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100