You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2023/04/28 20:47:45 UTC

[commons-io] 01/02: Spotbugs: Make a defensive copy of array

This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-io.git

commit 0ac2e28a2e9913eb32b197d77305c20ce5bd9499
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Fri Apr 28 16:47:34 2023 -0400

    Spotbugs: Make a defensive copy of array
    
    Setting to null resets to default
---
 src/main/java/org/apache/commons/io/input/BOMInputStream.java  | 10 ++++++----
 .../java/org/apache/commons/io/input/BOMInputStreamTest.java   |  7 ++++---
 2 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/src/main/java/org/apache/commons/io/input/BOMInputStream.java b/src/main/java/org/apache/commons/io/input/BOMInputStream.java
index 9d07afca..d9d9560a 100644
--- a/src/main/java/org/apache/commons/io/input/BOMInputStream.java
+++ b/src/main/java/org/apache/commons/io/input/BOMInputStream.java
@@ -107,8 +107,10 @@ public class BOMInputStream extends ProxyInputStream {
      */
     public static class Builder extends AbstractStreamBuilder<BOMInputStream, Builder> {
 
+        static final ByteOrderMark[] DEFAULT = { ByteOrderMark.UTF_8 };
+
         private boolean include;
-        private ByteOrderMark[] byteOrderMarks = { ByteOrderMark.UTF_8 };
+        private ByteOrderMark[] byteOrderMarks = DEFAULT;
 
         @SuppressWarnings("resource")
         @Override
@@ -123,7 +125,7 @@ public class BOMInputStream extends ProxyInputStream {
          * @return this
          */
         public Builder setByteOrderMarks(final ByteOrderMark[] byteOrderMarks) {
-            this.byteOrderMarks = byteOrderMarks;
+            this.byteOrderMarks = byteOrderMarks != null ? byteOrderMarks.clone() : DEFAULT;
             return this;
         }
 
@@ -177,7 +179,7 @@ public class BOMInputStream extends ProxyInputStream {
      */
     @Deprecated
     public BOMInputStream(final InputStream delegate) {
-        this(delegate, false, ByteOrderMark.UTF_8);
+        this(delegate, false, Builder.DEFAULT);
     }
 
     /**
@@ -191,7 +193,7 @@ public class BOMInputStream extends ProxyInputStream {
      */
     @Deprecated
     public BOMInputStream(final InputStream delegate, final boolean include) {
-        this(delegate, include, ByteOrderMark.UTF_8);
+        this(delegate, include, Builder.DEFAULT);
     }
 
     /**
diff --git a/src/test/java/org/apache/commons/io/input/BOMInputStreamTest.java b/src/test/java/org/apache/commons/io/input/BOMInputStreamTest.java
index decc6929..411b26f4 100644
--- a/src/test/java/org/apache/commons/io/input/BOMInputStreamTest.java
+++ b/src/test/java/org/apache/commons/io/input/BOMInputStreamTest.java
@@ -404,12 +404,13 @@ public class BOMInputStreamTest {
         assertThrows(IllegalArgumentException.class, () -> new BOMInputStream(createUtf8Input(data, true), false, (ByteOrderMark[]) null).close());
         assertThrows(IllegalArgumentException.class, () -> new BOMInputStream(createUtf8Input(data, true), false, new ByteOrderMark[0]).close());
         //
-        assertThrows(IllegalArgumentException.class, () -> BOMInputStream.builder()
+        try (final BOMInputStream bomInputStream = BOMInputStream.builder()
                 .setInputStream(createUtf8Input(data, true))
                 .setInclude(true)
                 .setByteOrderMarks((ByteOrderMark[]) null)
-                .get()
-                .close());
+                .get()) {
+            assertEquals(BOMInputStream.Builder.DEFAULT[0], bomInputStream.getBOM());
+        }
         assertThrows(IllegalArgumentException.class, () -> BOMInputStream.builder()
                 .setInputStream(createUtf8Input(data, true))
                 .setInclude(true)