From 60dd7ce5633bd866cd16a0ddc15101a005bc9e66 Mon Sep 17 00:00:00 2001 From: Looly Date: Thu, 16 Jun 2022 12:10:56 +0800 Subject: [PATCH] fix buf --- CHANGELOG.md | 3 ++- .../src/test/java/cn/hutool/core/util/ReUtilTest.java | 8 ++++++++ .../hutool/extra/compress/extractor/StreamExtractor.java | 5 ++++- .../src/test/java/cn/hutool/http/HttpRequestTest.java | 7 +++++++ hutool-json/src/main/java/cn/hutool/json/JSONParser.java | 2 ++ 5 files changed, 23 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c77f962ec..1ecad145e 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,7 @@ ------------------------------------------------------------------------------------------------------------- -# 5.8.4.M1 (2022-06-14) +# 5.8.4.M1 (2022-06-16) ### 🐣新特性 * 【extra 】 Sftp增加构造重载,支持超时(pr#653@Gitee) @@ -11,6 +11,7 @@ * 【json 】 修改byte[]统一转换为数组形式(issue#2377@Github) * ### 🐞Bug修复 +* 【extra 】 修复createExtractor中抛出异常后流未关闭问题(issue#2384@Github) ------------------------------------------------------------------------------------------------------------- diff --git a/hutool-core/src/test/java/cn/hutool/core/util/ReUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/util/ReUtilTest.java index 0b26e6241..116c48f5d 100755 --- a/hutool-core/src/test/java/cn/hutool/core/util/ReUtilTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/util/ReUtilTest.java @@ -142,6 +142,14 @@ public class ReUtilTest { Assert.assertEquals("我有个\\$符号\\{\\}", escape); } + @Test + public void escapeTest2(){ + String str = "a[bbbc"; + String re = "["; + final String s = ReUtil.get(ReUtil.escape(re), str, 0); + Assert.assertEquals("[", s); + } + @Test public void getAllGroupsTest() { //转义给定字符串,为正则相关的特殊符号转义 diff --git a/hutool-extra/src/main/java/cn/hutool/extra/compress/extractor/StreamExtractor.java b/hutool-extra/src/main/java/cn/hutool/extra/compress/extractor/StreamExtractor.java index 150cea101..a81eb3af7 100755 --- a/hutool-extra/src/main/java/cn/hutool/extra/compress/extractor/StreamExtractor.java +++ b/hutool-extra/src/main/java/cn/hutool/extra/compress/extractor/StreamExtractor.java @@ -59,7 +59,8 @@ public class StreamExtractor implements Extractor{ } /** - * 构造 + * 构造
+ * 如果抛出异常,则提供的流将被关闭 * * @param charset 编码 * @param archiverName 归档包格式,null表示自动检测 @@ -75,6 +76,8 @@ public class StreamExtractor implements Extractor{ this.in = factory.createArchiveInputStream(archiverName, in); } } catch (ArchiveException e) { + // issue#2384,如果报错可能持有文件句柄,导致无法删除文件 + IoUtil.close(in); throw new CompressException(e); } } diff --git a/hutool-http/src/test/java/cn/hutool/http/HttpRequestTest.java b/hutool-http/src/test/java/cn/hutool/http/HttpRequestTest.java index 765218027..0d326d15a 100644 --- a/hutool-http/src/test/java/cn/hutool/http/HttpRequestTest.java +++ b/hutool-http/src/test/java/cn/hutool/http/HttpRequestTest.java @@ -204,4 +204,11 @@ public class HttpRequestTest { HttpRequest httpRequest = new HttpRequest(urlBuilder); httpRequest.setMethod(Method.GET).execute(); } + + @Test + public void get122Test(){ + String url = "http://122.112.234.240:9007/monitor/devices/real/59312710/all/0"; + final String s = HttpUtil.get(url); + Console.log(s); + } } diff --git a/hutool-json/src/main/java/cn/hutool/json/JSONParser.java b/hutool-json/src/main/java/cn/hutool/json/JSONParser.java index 6eedd09c6..dc341408b 100755 --- a/hutool-json/src/main/java/cn/hutool/json/JSONParser.java +++ b/hutool-json/src/main/java/cn/hutool/json/JSONParser.java @@ -77,6 +77,8 @@ public class JSONParser { case ';': case ',': if (tokener.nextClean() == '}') { + // issue#2380 + // 尾后逗号(Trailing Commas),JSON中虽然不支持,但是ECMAScript 2017支持,此处做兼容。 return; } tokener.back();