diff --git a/app/src/main/java/com/hippo/text/Html.java b/app/src/main/java/com/hippo/text/Html.java
index 76924ba4f..b8c7ff7a8 100644
--- a/app/src/main/java/com/hippo/text/Html.java
+++ b/app/src/main/java/com/hippo/text/Html.java
@@ -713,11 +713,13 @@ class HtmlToSpannedConverter implements ContentHandler {
where, len,
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
} else {
- int c = getHtmlColor(f.mColor);
- if (c != -1) {
+ try {
+ int c = getHtmlColor(f.mColor);
text.setSpan(new ForegroundColorSpan(c | 0xFF000000),
where, len,
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
+ } catch (IllegalArgumentException e) {
+ // Ignore
}
}
}
@@ -906,16 +908,19 @@ class HtmlToSpannedConverter implements ContentHandler {
*/
@ColorInt
public static int getHtmlColor(@NonNull String colorString) {
- if (colorString.charAt(0) == '#') {
+ if ((colorString.length() == 7 || colorString.length() == 9) && colorString.charAt(0) == '#') {
// Use a long to avoid rollovers on #ffXXXXXX
- long color = Long.parseLong(colorString.substring(1), 16);
+ long color;
+ try {
+ color = Long.parseLong(colorString.substring(1), 16);
+ } catch (NumberFormatException e) {
+ throw new IllegalArgumentException("Unknown color: " + colorString);
+ }
if (colorString.length() == 7) {
// Set the alpha value
color |= 0x00000000ff000000;
- } else if (colorString.length() != 9) {
- throw new IllegalArgumentException("Unknown color: " + colorString);
}
- return (int)color;
+ return (int) color;
} else if (colorString.startsWith("rgb(") && colorString.endsWith(")")) {
String str = colorString.substring(4, colorString.length() - 1);
String[] colors = str.split("[\\s]*,[\\s]*");