AztecEditor-Android: Add a character before the picture in demo app crashes Aztec

This is weird. I tried to add some character before the first picture in demo app and Aztec crashed with the following stack trace:

                  java.lang.ArrayIndexOutOfBoundsException: length=39; index=-1
                      at android.text.DynamicLayout.getBlockIndex(DynamicLayout.java:646)
                      at android.widget.Editor.drawHardwareAccelerated(Editor.java:1787)
                      at android.widget.Editor.onDraw(Editor.java:1756)
                      at android.widget.TextView.onDraw(TextView.java:7723)
                      at android.view.View.draw(View.java:20338)
                      at android.view.View.updateDisplayListIfDirty(View.java:19283)
                      at android.view.View.draw(View.java:20061)
                      at android.view.ViewGroup.drawChild(ViewGroup.java:4421)
                      at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4207)
                      at android.view.View.updateDisplayListIfDirty(View.java:19274)
                      at android.view.View.draw(View.java:20061)
                      at android.view.ViewGroup.drawChild(ViewGroup.java:4421)
                      at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4207)
                      at android.view.View.draw(View.java:20341)
                      at android.widget.ScrollView.draw(ScrollView.java:2731)
                      at android.view.View.updateDisplayListIfDirty(View.java:19283)
                      at android.view.View.draw(View.java:20061)
                      at android.view.ViewGroup.drawChild(ViewGroup.java:4421)
                      at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4207)
                      at android.view.View.updateDisplayListIfDirty(View.java:19274)
                      at android.view.View.draw(View.java:20061)
                      at android.view.ViewGroup.drawChild(ViewGroup.java:4421)
                      at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4207)
                      at android.view.View.updateDisplayListIfDirty(View.java:19274)
                      at android.view.View.draw(View.java:20061)
                      at android.view.ViewGroup.drawChild(ViewGroup.java:4421)
                      at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4207)
                      at android.view.View.updateDisplayListIfDirty(View.java:19274)
                      at android.view.View.draw(View.java:20061)
                      at android.view.ViewGroup.drawChild(ViewGroup.java:4421)
                      at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4207)
                      at android.view.View.updateDisplayListIfDirty(View.java:19274)
                      at android.view.View.draw(View.java:20061)
                      at android.view.ViewGroup.drawChild(ViewGroup.java:4421)
                      at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4207)
                      at android.view.View.updateDisplayListIfDirty(View.java:19274)
                      at android.view.View.draw(View.java:20061)
                      at android.view.ViewGroup.drawChild(ViewGroup.java:4421)
                      at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4207)
                      at android.view.View.draw(View.java:20341)
                      at com.android.internal.policy.DecorView.draw(DecorView.java:979)
                      at android.view.View.updateDisplayListIfDirty(View.java:19283)
                      at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:686)
                      at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:692)
                      at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:800)
                      at android.view.ViewRootImpl.draw(ViewRootImpl.java:3451)
                      at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:3238)
                      at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2773)
                      at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1742)
                      at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7763)
                      at android.view.Choreographer$CallbackRecord.run(Choreographer.java:911)
                      at android.view.Choreographer.doCallbacks(Choreographer.java:723)
                      at android.view.Choreographer.doFrame(Choreographer.java:658)
                      at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:897)
                      at android.os.Handler.handleCallback(Handler.java:789)
                      at android.os.Handler.dispatchMessage(Handler.java:98)
                      at android.os.Looper.loop(Looper.java:164)
                      at android.app.ActivityThread.main(ActivityThread.java:6938)
                      at java.lang.reflect.Method.invoke(Native Method)
                      at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)

I’ve been able to reproduce the issue on Android 8.0 on both emulators, and real devices.

Steps to repro:

  • Start the demo app
  • Tap at the beginning of the document to show the keyboard up
  • Tap a key
  • Crash

Would be cool if someone else can verify this report, since looking at crash report it seems something internal to Android.

Tested on develop running on Android 8.0.

About this issue

  • Original URL
  • State: closed
  • Created 6 years ago
  • Comments: 17 (14 by maintainers)

Most upvoted comments

Closing via #801