From eb3b01053eeb716106a28edaaac537d7f5725c07 Mon Sep 17 00:00:00 2001 From: Mygod Date: Mon, 9 Jan 2017 15:12:53 +0800 Subject: [PATCH] Fix 'Fix #1064' --- .../scala/com/github/shadowsocks/acl/Acl.scala | 7 +++---- .../shadowsocks/acl/CustomRulesFragment.scala | 16 +++++++++------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/main/scala/com/github/shadowsocks/acl/Acl.scala b/src/main/scala/com/github/shadowsocks/acl/Acl.scala index d943ba65..7f70314b 100644 --- a/src/main/scala/com/github/shadowsocks/acl/Acl.scala +++ b/src/main/scala/com/github/shadowsocks/acl/Acl.scala @@ -88,10 +88,9 @@ class Acl { override def toString: String = { val result = new StringBuilder() result.append(if (bypass) "[bypass_all]\n" else "[proxy_all]\n") - var bypassList = bypassHostnames.toStream - var proxyList = proxyHostnames.toStream - if (bypass) proxyList = subnets.toStream.map(_.toString) #::: bypassList - else bypassList = subnets.toStream.map(_.toString) #::: proxyList + val (bypassList, proxyList) = + if (bypass) (bypassHostnames.toStream, subnets.toStream.map(_.toString) #::: proxyHostnames.toStream) + else (subnets.toStream.map(_.toString) #::: bypassHostnames.toStream, proxyHostnames.toStream) if (bypassList.nonEmpty) { result.append("[bypass_list]\n") result.append(bypassList.mkString("\n")) diff --git a/src/main/scala/com/github/shadowsocks/acl/CustomRulesFragment.scala b/src/main/scala/com/github/shadowsocks/acl/CustomRulesFragment.scala index 4ab8e10e..220dc804 100644 --- a/src/main/scala/com/github/shadowsocks/acl/CustomRulesFragment.scala +++ b/src/main/scala/com/github/shadowsocks/acl/CustomRulesFragment.scala @@ -208,13 +208,15 @@ class CustomRulesFragment extends ToolbarFragment with Toolbar.OnMenuItemClickLi def getSectionTitle(i: Int): String = { val j = i - acl.subnets.size - try (if (j < 0) acl.subnets(i).address.getHostAddress.substring(0, 1) else { - val hostname = acl.proxyHostnames(i) - PATTERN_DOMAIN.findFirstMatchIn(hostname) match { - case Some(m) => m.matched.replaceAll("\\\\.", ".") // don't convert IDN yet - case None => hostname - } - }).substring(0, 1) catch { + try { + (if (j < 0) acl.subnets(i).address.getHostAddress.substring(0, 1) else { + val hostname = acl.proxyHostnames(i) + PATTERN_DOMAIN.findFirstMatchIn(hostname) match { + case Some(m) => m.matched.replaceAll("\\\\.", ".") // don't convert IDN yet + case None => hostname + } + }).substring(0, 1) + } catch { case _: IndexOutOfBoundsException => " " } }