X-Git-Url: http://gitweb.fperrin.net/?a=blobdiff_plain;f=src%2Fcom%2Fhughes%2Fandroid%2Fdictionary%2Fengine%2FHtmlEntry.java;h=937c88295e585f98dc850679b0718a4753f33683;hb=83d497f704ad1f8ba85190255d46a3fbe0e3c353;hp=ce57e11a980cc2011bb57af85cb60f20896d5bf9;hpb=f3f48901a1bc21bb9badc4174e2db7c96b8656ff;p=Dictionary.git diff --git a/src/com/hughes/android/dictionary/engine/HtmlEntry.java b/src/com/hughes/android/dictionary/engine/HtmlEntry.java index ce57e11..937c882 100644 --- a/src/com/hughes/android/dictionary/engine/HtmlEntry.java +++ b/src/com/hughes/android/dictionary/engine/HtmlEntry.java @@ -3,6 +3,7 @@ package com.hughes.android.dictionary.engine; import com.hughes.util.StringUtil; import com.hughes.util.raf.RAFListSerializer; +import com.hughes.util.raf.RAFListSerializerSkippable; import com.ibm.icu.text.Transliterator; import java.io.DataInput; @@ -50,7 +51,7 @@ public class HtmlEntry extends AbstractEntry implements Comparable { public static byte[] readData(DataInput raf) throws IOException { int len = StringUtil.readVarInt(raf); - final byte[] bytes = new byte[len]; + final byte[] bytes = new byte[Math.min(len, 20 * 1024 * 1024)]; raf.readFully(bytes); return bytes; } @@ -71,7 +72,7 @@ public class HtmlEntry extends AbstractEntry implements Comparable { return new Row(this.index, rowIndex, dictionaryIndex); } - static final class Serializer implements RAFListSerializer { + static final class Serializer implements RAFListSerializerSkippable { final Dictionary dictionary; final FileChannel ch; @@ -86,6 +87,20 @@ public class HtmlEntry extends AbstractEntry implements Comparable { return new HtmlEntry(dictionary, ch, raf, index); } + @Override + public void skip(DataInput raf, final int index) throws IOException { + if (dictionary.dictFileVersion >= 7) + { + StringUtil.readVarInt(raf); + } + else + { + raf.skipBytes(2); + } + int l = raf.readUnsignedShort(); + raf.skipBytes(l); + } + @Override public void write(DataOutput raf, HtmlEntry t) throws IOException { t.writeBase(raf); @@ -94,7 +109,7 @@ public class HtmlEntry extends AbstractEntry implements Comparable { static final class DataSerializer implements RAFListSerializer { @Override - public HtmlEntry read(DataInput raf, final int index) throws IOException { + public HtmlEntry read(DataInput raf, final int index) { assert false; return null; } @@ -112,7 +127,7 @@ public class HtmlEntry extends AbstractEntry implements Comparable { } @Override - public void write(DataOutput raf, byte[] t) throws IOException { + public void write(DataOutput raf, byte[] t) { assert false; } } @@ -237,8 +252,8 @@ public class HtmlEntry extends AbstractEntry implements Comparable { } raf = inp; this.ch = ch; - numBytes = raf.readInt(); - numZipBytes = raf.readInt(); + numBytes = Math.min(raf.readInt(), 20 * 1024 * 1024); + numZipBytes = Math.min(raf.readInt(), 20 * 1024 * 1024); offset = ch.position(); raf.skipBytes(numZipBytes); }