Skip to content

Quality: Negative startIndex causes IndexOutOfBoundsException in indexOfFrom#1894

Open
Nam0101 wants to merge 1 commit into
mtotschnig:masterfrom
Nam0101:contribai/improve/quality/negative-startindex-causes-indexoutofbou
Open

Quality: Negative startIndex causes IndexOutOfBoundsException in indexOfFrom#1894
Nam0101 wants to merge 1 commit into
mtotschnig:masterfrom
Nam0101:contribai/improve/quality/negative-startindex-causes-indexoutofbou

Conversation

@Nam0101

@Nam0101 Nam0101 commented Mar 30, 2026

Copy link
Copy Markdown

Hi there! 👋

While going through the codebase, I noticed a minor opportunity for improvement regarding myExpenses/src/main/java/org/totschnig/myexpenses/util/CollectionUtils.kt.

Context:
indexOfFrom only checks startIndex >= size. When startIndex < 0, subList(startIndex, size) throws IndexOutOfBoundsException, causing a runtime crash. As a general-purpose utility extension, this should not crash on invalid indices.

Proposed fix:
Normalize or guard startIndex before calling subList:

fun List.indexOfFrom(element: T, startIndex: Int): Int {
val from = startIndex.coerceAtLeast(0)
if (from >= this.size) return -1
val subIndex = this.subList(from, this.size).indexOf(element)
return if (subIndex == -1) -1 else from + subIndex
}

Files touched:

  • myExpenses/src/main/java/org/totschnig/myexpenses/util/CollectionUtils.kt (modified)

(Note: Tested the changes locally to ensure everything works as expected. Let me know if you need any adjustments, happy to help!)


NamNV
📍 Hanoi, Vietnam
📧 nam.nv205106@gmail.com

…exoffrom

`indexOfFrom` only checks `startIndex >= size`. When `startIndex < 0`, `subList(startIndex, size)` throws `IndexOutOfBoundsException`, causing a runtime crash. As a general-purpose utility extension, this should not crash on invalid indices.


Affected files: CollectionUtils.kt

Signed-off-by: Nguyen Van Nam <nam.nv205106@gmail.com>
@eightys3v3n

Copy link
Copy Markdown

These seem to be LLM generated. Please do not overwhelm the development team with AI generated PRs. There is a growing problem with LLM generated slop PRs overwhelming open source development teams.
I don't mean to imply that's what is happening here, but just a reminder to be respectful and responsible when using LLMs.

@mtotschnig

Copy link
Copy Markdown
Owner

@Nam0101 Would you mind adding unit tests to CollectionUtilsTest that validate the difference the change in your PR makes?

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.

3 participants