Skip to content

Commit cc30aa9

Browse files
committed
Clean up StringBuilder use
1 parent aff6507 commit cc30aa9

4 files changed

Lines changed: 21 additions & 4 deletions

File tree

src/main/java/org/jsoup/helper/UrlBuilder.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,9 @@ URL build() {
4545
appendToAscii(u.getPath(), false, normUrl);
4646
if (q != null) {
4747
normUrl.append('?');
48-
appendToAscii(StringUtil.releaseBuilder(q), true, normUrl);
48+
String query = StringUtil.releaseBuilder(q);
49+
q = null; // don't retain the released builder
50+
appendToAscii(query, true, normUrl);
4951
}
5052
if (u.getRef() != null) {
5153
normUrl.append('#');

src/main/java/org/jsoup/parser/TokenData.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,7 @@ void reset() {
7474
String value() {
7575
if (builder != null) {
7676
// in rare case we get hit twice, don't toString the builder twice
77-
value = builder.toString();
78-
StringUtil.releaseBuilder(builder);
77+
value = StringUtil.releaseBuilder(builder);
7978
builder = null;
8079
return value;
8180
}

src/test/java/org/jsoup/helper/HttpConnectionTest.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -308,8 +308,10 @@ public void caseInsensitiveHeaders(Locale locale) {
308308

309309
@Test public void encodeUrl() throws MalformedURLException {
310310
URL url1 = new URL("https://test.com/foo%20bar/%5BOne%5D?q=white+space#frag");
311-
URL url2 = new UrlBuilder(url1).build();
311+
UrlBuilder builder = new UrlBuilder(url1);
312+
URL url2 = builder.build();
312313
assertEquals("https://test.com/foo%20bar/%5BOne%5D?q=white+space#frag", url2.toExternalForm());
314+
assertNull(builder.q);
313315
}
314316

315317
@Test public void encodeUrlSupplementary() throws MalformedURLException {

src/test/java/org/jsoup/parser/TokeniserTest.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,4 +213,18 @@ public void bufferUpInAttributeVal() {
213213
data.append("def");
214214
assertEquals("abcdef", data.toString());
215215
}
216+
217+
@Test void tokenDataValueLifecycle() {
218+
TokenData data = new TokenData();
219+
data.set("abc");
220+
data.append("def");
221+
assertEquals("abcdef", data.value());
222+
assertEquals("abcdef", data.value());
223+
224+
data.append('g');
225+
assertEquals("abcdefg", data.value());
226+
227+
data.reset();
228+
assertEquals("", data.value());
229+
}
216230
}

0 commit comments

Comments
 (0)