yydcdut / RxMarkdown

:fax:Markdown for Android, supports TextView && EditText (Live Preview), supports code high light.
749 stars 93 forks source link

Bug: Windows line-breaks lead to Exception #41

Closed korelstar closed 6 years ago

korelstar commented 6 years ago

I have a RxMDEditText (from release 0.1.1-beta) pre-filled with the following content:

# Test
1. Test
- Test

If the line-breaks are windows-style (\r\n), then the formatting doesn't work and when I try to change the text of the note, the following exception occurs:

java.lang.StringIndexOutOfBoundsException: length=23; regionStart=-1; regionLength=7
    at java.lang.AbstractStringBuilder.startEndAndLength(AbstractStringBuilder.java:211)
    at java.lang.AbstractStringBuilder.replace0(AbstractStringBuilder.java:437)
    at java.lang.StringBuilder.replace(StringBuilder.java:637)
    at com.yydcdut.rxmarkdown.syntax.edit.OrderListSyntax.findTrueIndex(OrderListSyntax.java:133)
    at com.yydcdut.rxmarkdown.syntax.edit.OrderListSyntax.findTrueIndex(OrderListSyntax.java:134)
    at com.yydcdut.rxmarkdown.syntax.edit.OrderListSyntax.format(OrderListSyntax.java:58)
    at com.yydcdut.rxmarkdown.syntax.edit.EditFactory.parse(EditFactory.java:168)
    at com.yydcdut.rxmarkdown.RxMDEditText.format(RxMDEditText.java:287)
    at com.yydcdut.rxmarkdown.RxMDEditText.access$800(RxMDEditText.java:45)
    at com.yydcdut.rxmarkdown.RxMDEditText$EditTextWatcher.afterTextChanged(RxMDEditText.java:186)
    at android.widget.TextView.sendAfterTextChanged(TextView.java:8004)
    at android.widget.TextView$ChangeWatcher.afterTextChanged(TextView.java:10165)
    at android.text.SpannableStringBuilder.sendAfterTextChanged(SpannableStringBuilder.java:1043)
    at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:560)
    at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:492)
    at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:491)
    at android.view.inputmethod.BaseInputConnection.replaceText(BaseInputConnection.java:685)
    at android.view.inputmethod.BaseInputConnection.commitText(BaseInputConnection.java:197)
    at com.android.internal.widget.EditableInputConnection.commitText(EditableInputConnection.java:184)
    at com.android.internal.view.IInputConnectionWrapper.executeMessage(IInputConnectionWrapper.java:286)
    at com.android.internal.view.IInputConnectionWrapper$MyHandler.handleMessage(IInputConnectionWrapper.java:78)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:148)
    at android.app.ActivityThread.main(ActivityThread.java:5461)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

Please note: if the line-breaks are unix-style (\n), then everything is fine.