mirror of
https://github.com/fankes/termux-app.git
synced 2025-09-06 10:45:23 +08:00
Fixed: Log exception instead of crashing app on NumberFormatException for invalid termcap/terminfo string requested
java.lang.NumberFormatException: For input string: " a" at java.lang.Long.parseLong(Long.java:583) at java.lang.Long.valueOf(Long.java:781) at java.lang.Long.decode(Long.java:933) at com.termux.terminal.TerminalEmulator.doDeviceControl(TerminalEmulator.java:940) at com.termux.terminal.TerminalEmulator.processCodePoint(TerminalEmulator.java:813)
This commit is contained in:
@@ -935,10 +935,17 @@ public final class TerminalEmulator {
|
|||||||
for (String part : dcs.substring(2).split(";")) {
|
for (String part : dcs.substring(2).split(";")) {
|
||||||
if (part.length() % 2 == 0) {
|
if (part.length() % 2 == 0) {
|
||||||
StringBuilder transBuffer = new StringBuilder();
|
StringBuilder transBuffer = new StringBuilder();
|
||||||
|
char c;
|
||||||
for (int i = 0; i < part.length(); i += 2) {
|
for (int i = 0; i < part.length(); i += 2) {
|
||||||
char c = (char) Long.decode("0x" + part.charAt(i) + "" + part.charAt(i + 1)).longValue();
|
try {
|
||||||
|
c = (char) Long.decode("0x" + part.charAt(i) + "" + part.charAt(i + 1)).longValue();
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
|
Logger.logStackTraceWithMessage(mClient, LOG_TAG, "Invalid device termcap/terminfo encoded name \"" + part + "\"", e);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
transBuffer.append(c);
|
transBuffer.append(c);
|
||||||
}
|
}
|
||||||
|
|
||||||
String trans = transBuffer.toString();
|
String trans = transBuffer.toString();
|
||||||
String responseValue;
|
String responseValue;
|
||||||
switch (trans) {
|
switch (trans) {
|
||||||
|
Reference in New Issue
Block a user