Opening certain tabs crashes the app. Example tab: Snowman by Sia version 3.
Crashlog:
java.lang.StringIndexOutOfBoundsException:
at java.lang.String.substring (String.java:2064)
at java.lang.String.subSequence (String.java:2107)
at com.gbros.tabslite.TabTextView.linify (TabTextView.kt:86)
at com.gbros.tabslite.TabTextView.setTabContent (TabTextView.kt:72)
at com.gbros.tabslite.TabDetailFragment$startGetData$1$$special$$inlined$doOnLayout$lambda$1.run (TabDetailFragment.kt:364)
at android.os.Handler.handleCallback (Handler.java:938)
at android.os.Handler.dispatchMessage (Handler.java:99)
at android.os.Looper.loop (Looper.java:246)
at android.app.ActivityThread.main (ActivityThread.java:8633)
at java.lang.reflect.Method.invoke (Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:602)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1130)
Relevant code:
// takes a [tab] and breaks it into two lines (chord and lyric). Adds chord processing and
// puts it in `tabLines`.
private fun linify(singleLyric: CharSequence){
Log.v(LOG_NAME, "Breaking single line into chords/lyrics")
var indexOfLineBreak = singleLyric.indexOf("\n")
if (indexOfLineBreak == -1) // in case of lines ending without a newline after.
indexOfLineBreak = singleLyric.length
val chords: CharSequence = singleLyric.subSequence(0, indexOfLineBreak).trimEnd()
val lyrics: CharSequence = singleLyric.subSequence(indexOfLineBreak + 1, singleLyric.length).trimEnd() // <-- line 86
tabLines.add(Pair(processChords(chords), processChords(lyrics)))
}
Opening certain tabs crashes the app. Example tab: Snowman by Sia version 3.
Crashlog:
Relevant code: