From c6c0ee954fbe1762830d83a849573671e60f1654 Mon Sep 17 00:00:00 2001 From: lion Date: Fri, 12 Sep 2025 09:44:34 +0800 Subject: [PATCH] fix the bug of region filtering --- .../java/src/main/java/org/lionsoul/ip2region/xdb/Maker.java | 4 ++++ .../java/src/main/java/org/lionsoul/ip2region/xdb/Util.java | 2 +- .../src/test/java/org/lionsoul/ip2region/xdb/UtilTest.java | 5 ++++- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/maker/java/src/main/java/org/lionsoul/ip2region/xdb/Maker.java b/maker/java/src/main/java/org/lionsoul/ip2region/xdb/Maker.java index 8779897..4cd378e 100644 --- a/maker/java/src/main/java/org/lionsoul/ip2region/xdb/Maker.java +++ b/maker/java/src/main/java/org/lionsoul/ip2region/xdb/Maker.java @@ -178,6 +178,10 @@ public class Maker { // apply the field filtering final String region = Util.regionFiltering(seg.region, fields); + if (region.length() < 1) { + throw new Exception("empty region info for segment `"+seg+"`"); + } + segments.add(new Segment(seg.startIP, seg.endIP, region)); last = seg; } diff --git a/maker/java/src/main/java/org/lionsoul/ip2region/xdb/Util.java b/maker/java/src/main/java/org/lionsoul/ip2region/xdb/Util.java index 1dc1ddf..50ce989 100644 --- a/maker/java/src/main/java/org/lionsoul/ip2region/xdb/Util.java +++ b/maker/java/src/main/java/org/lionsoul/ip2region/xdb/Util.java @@ -118,7 +118,7 @@ public class Util } sb.append(fs[idx]); - if (sb.length() > 0 && i < tailing) { + if (i < tailing) { sb.append("|"); } } diff --git a/maker/java/src/test/java/org/lionsoul/ip2region/xdb/UtilTest.java b/maker/java/src/test/java/org/lionsoul/ip2region/xdb/UtilTest.java index 7038dba..192fed8 100644 --- a/maker/java/src/test/java/org/lionsoul/ip2region/xdb/UtilTest.java +++ b/maker/java/src/test/java/org/lionsoul/ip2region/xdb/UtilTest.java @@ -80,7 +80,10 @@ public class UtilTest { public void testRegionFiltering() { final String[] regions = new String[]{ "亚洲|中国|广东|深圳|宝安|电信|113.88311|22.55371|440306|0755|518100|Asia/Shanghai|CNY|11|CHXX0120", - "大洲|国家|省份|城市|区县|ISP|经度|纬度|0|0|0|0|0" + "大洲|国家|省份|城市|区县|ISP|经度|纬度|0|0|0|0|0", + "||||||||||||", + "亚洲|中国|||||||||||", + "美国|加利福尼亚州|洛杉矶|专线用户|||||||||" }; final int[] fields = new int[] {1,2,3,4,6,7};