Skip to content

fix(fenwick-tree): reject noninteger positions before traversal - #2246

Open
Shubham-Padkonde wants to merge 1 commit into
trekhleb:masterfrom
Shubham-Padkonde:fix/fenwick-integer-indexes
Open

Shubham-Padkonde wants to merge 1 commit into
trekhleb:masterfrom
Shubham-Padkonde:fix/fenwick-integer-indexes

Conversation

@Shubham-Padkonde

Copy link
Copy Markdown

Fenwick tree operations check the position's range but not whether it is an integer. increase(1.5, 7) writes fractional array properties, query(NaN) silently returns zero, and query(1.5) never terminates: its loop reaches 0.5, whose bitwise low bit is zero.

Require integer positions in the existing update/query range guards, preserving the existing error message. Range queries inherit the same validation. Add regressions for fractional updates and queries and NaN bounds; the potentially nonterminating query runs with a bounded VM timeout so a regression cannot hang the test runner.

Validation: all 178 suites / 591 tests pass with coverage, and ESLint passes. The original fractional query times out, while the fix rejects it. Independent plain-array comparisons verify 189,000 prefix/range sums after positive and negative updates.

AI assistance was used to investigate, implement, and validate this change.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant