]> source.dussan.org Git - jgit.git/commitdiff
Accept UTF8 BOM with BlobBasedConfig 56/62356/1
authorDoug Kelly <dougk.ff7@gmail.com>
Wed, 9 Dec 2015 22:36:37 +0000 (16:36 -0600)
committerDoug Kelly <dougk.ff7@gmail.com>
Wed, 9 Dec 2015 22:48:20 +0000 (16:48 -0600)
In I1f5dc07182dbf6bba2a9f4807fdd25b475da4ead, FileBasedConfig got
support for reading a configuration with UTF8 BOM.  Apply the same
support to BlobBasedConfig, to make SubmoduleWalk able to parse
.gitmodules configurations with BOM.

Change-Id: I25b5474779952fe2c076180b96fc2869eef190a8
Signed-off-by: Doug Kelly <dougk.ff7@gmail.com>
org.eclipse.jgit/src/org/eclipse/jgit/lib/BlobBasedConfig.java

index cbb2f5b8565c13156bc5772c6b65043dd74df934..7d52991df0fd69906addbc1a0e1706978f25addb 100644 (file)
@@ -79,7 +79,15 @@ public class BlobBasedConfig extends Config {
        public BlobBasedConfig(Config base, final byte[] blob)
                        throws ConfigInvalidException {
                super(base);
-               fromText(RawParseUtils.decode(blob));
+               final String decoded;
+               if (blob.length >= 3 && blob[0] == (byte) 0xEF
+                               && blob[1] == (byte) 0xBB && blob[2] == (byte) 0xBF) {
+                       decoded = RawParseUtils.decode(RawParseUtils.UTF8_CHARSET,
+                                       blob, 3, blob.length);
+               } else {
+                       decoded = RawParseUtils.decode(blob);
+               }
+               fromText(decoded);
        }
 
        /**