From 3bbd61f9d7c4efc3377ad4ec23ae13e43245549a Mon Sep 17 00:00:00 2001 From: Leonid Plyushch Date: Wed, 17 Apr 2019 03:13:32 +0300 Subject: [PATCH] extra keys view: fix crash in some cases AndroidRuntime: FATAL EXCEPTION: main AndroidRuntime: Process: com.termux, PID: 15799 AndroidRuntime: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.widget.ToggleButton.isPressed()' on a null object reference AndroidRuntime: at com.termux.app.ExtraKeysView.readSpecialButton(ExtraKeysView.java:119) AndroidRuntime: at com.termux.app.TermuxViewClient.readControlKey(TermuxViewClient.java:116) AndroidRuntime: at com.termux.view.TerminalView.inputCodePoint(TerminalView.java:655) AndroidRuntime: at com.termux.view.TerminalView$2.sendTextToTerminal(TerminalView.java:336) AndroidRuntime: at com.termux.view.TerminalView$2.commitText(TerminalView.java:273) AndroidRuntime: at com.android.internal.view.IInputConnectionWrapper.executeMessage(IInputConnectionWrapper.java:341) AndroidRuntime: at com.android.internal.view.IInputConnectionWrapper$MyHandler.handleMessage(IInputConnectionWrapper.java:85) AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:105) AndroidRuntime: at android.os.Looper.loop(Looper.java:164) AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:6944) AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method) AndroidRuntime: at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327) AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374) --- app/src/main/java/com/termux/app/ExtraKeysView.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/termux/app/ExtraKeysView.java b/app/src/main/java/com/termux/app/ExtraKeysView.java index cd391469..2c093f74 100644 --- a/app/src/main/java/com/termux/app/ExtraKeysView.java +++ b/app/src/main/java/com/termux/app/ExtraKeysView.java @@ -115,10 +115,14 @@ public final class ExtraKeysView extends GridLayout { if (! state.isOn) return false; - + + if (state.button == null) { + return false; + } + if (state.button.isPressed()) return true; - + if (! state.button.isChecked()) return false;