Repository navigation
Set the capacity of a Vector made with initWithElements - #44
Merged
Merged
Conversation
Vector::initWithElements set the count but left the capacity at zero, so the first add after it saw count != capacity, did not grow the array, and wrote past its end. Copy did the same, since it allocates by capacity and copies by count. Quetoo found this when it trimmed its bots' link vectors. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Contributor
There was a problem hiding this comment.
🟢 Approval recommended
The focused fix restores Vector invariants and includes appropriate regression coverage.
0 open findings
What changed in this PR
Initializes Vector capacity correctly for supplied elements, preventing out-of-bounds writes and invalid copies.
Changes:
- Sets
capacityequal to the initial element count. - Adds regression coverage for growth and copying.
| File | Description |
|---|---|
Sources/Objectively/Vector.c |
Initializes capacity in initWithElements. |
Tests/Objectively/Vector.c |
Tests capacity, subsequent additions, and copying. |
🧠 Review effort: Balanced
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Vector::initWithElementssetcountbut leftcapacityat 0. The firstaddafter it then sawcount != capacity, did not grow the array, and wrote past its end.copyhad the same defect, because it allocates bycapacityand copies bycount.The fix sets
capacitytocount. TheinitWithElementstest now adds to the vector and copies it. Without the fix, the test fails withvector->capacity == 0.Quetoo found this when it trimmed its bots' link vectors (jdolan/quetoo#1108).
🤖 Generated with Claude Code