diff --git a/src/main/java/com/reandroid/arsc/header/HeaderBlock.java b/src/main/java/com/reandroid/arsc/header/HeaderBlock.java index 39bdefe..84307ff 100755 --- a/src/main/java/com/reandroid/arsc/header/HeaderBlock.java +++ b/src/main/java/com/reandroid/arsc/header/HeaderBlock.java @@ -53,6 +53,9 @@ import java.util.List; public HeaderBlock(ChunkType chunkType){ this(chunkType.ID); } + public int getMinimumSize(){ + return countBytes(); + } public ByteArray getExtraBytes() { return extraBytes; } diff --git a/src/main/java/com/reandroid/arsc/header/InfoHeader.java b/src/main/java/com/reandroid/arsc/header/InfoHeader.java index 53fe7f8..621cf0f 100644 --- a/src/main/java/com/reandroid/arsc/header/InfoHeader.java +++ b/src/main/java/com/reandroid/arsc/header/InfoHeader.java @@ -30,6 +30,12 @@ public InfoHeader() { this((short) 0); } + + @Override + public int getMinimumSize(){ + return INFO_MIN_SIZE; + } + @Override void initExtraBytes(ByteArray extraBytes, int difference){ } @@ -55,4 +61,6 @@ infoHeader.readBytes(blockReader); return infoHeader; } + + private static final int INFO_MIN_SIZE = 8; } diff --git a/src/main/java/com/reandroid/arsc/header/TypeHeader.java b/src/main/java/com/reandroid/arsc/header/TypeHeader.java index 1c73584..2e3911b 100644 --- a/src/main/java/com/reandroid/arsc/header/TypeHeader.java +++ b/src/main/java/com/reandroid/arsc/header/TypeHeader.java @@ -44,6 +44,10 @@ public class TypeHeader extends HeaderBlock{ addChild(config); } + @Override + public int getMinimumSize(){ + return TYPE_MIN_SIZE; + } public ByteItem getId() { return id; } @@ -72,4 +76,7 @@ public class TypeHeader extends HeaderBlock{ +", entriesStart=" + getEntriesStart() +", config=" + getConfig() + '}'; } + + //typeHeader.countBytes() - getConfig().countBytes() + ResConfig.SIZE_16 + private static final int TYPE_MIN_SIZE = 36; } diff --git a/src/main/java/com/reandroid/arsc/io/BlockReader.java b/src/main/java/com/reandroid/arsc/io/BlockReader.java index c8d3104..7fd3cf3 100755 --- a/src/main/java/com/reandroid/arsc/io/BlockReader.java +++ b/src/main/java/com/reandroid/arsc/io/BlockReader.java @@ -70,7 +70,7 @@ import java.io.*; } public TypeHeader readTypeHeader() throws IOException{ TypeHeader typeHeader = new TypeHeader(); - if(available() < typeHeader.countBytes()){ + if(available() < typeHeader.getMinimumSize()){ return null; } int pos = getPosition(); @@ -80,7 +80,7 @@ import java.io.*; } public InfoHeader readHeaderBlock() throws IOException { InfoHeader infoHeader = new InfoHeader(); - if(available() < infoHeader.countBytes()){ + if(available() < infoHeader.getMinimumSize()){ return null; } int pos = getPosition();