<action dev="jahlborn" type="add">
Add initial support for creating/parsing ole content.
</action>
+ <action dev="jahlborn" type="fix" system="SourceForge2" issue="97">
+ Ignore invalid column usage map definitions.
+ </action>
</release>
<release version="2.0.0" date="2013-08-26">
<action dev="jahlborn" type="update">
for more details.
</action>
</release>
+ <release version="1.2.14.3" date="TBD">
+ <action dev="jahlborn" type="fix" system="SourceForge2" issue="97">
+ Ignore invalid column usage map definitions.
+ </action>
+ </release>
<release version="1.2.14.2" date="2013-08-25">
<action dev="jahlborn" type="fix" system="SourceForge2" issue="96">
Fix reading of Properties with multiple value blocks.
import com.healthmarketscience.jackcess.ColumnBuilder;
import com.healthmarketscience.jackcess.CursorBuilder;
import com.healthmarketscience.jackcess.DataType;
-import com.healthmarketscience.jackcess.Index;
import com.healthmarketscience.jackcess.IndexBuilder;
import com.healthmarketscience.jackcess.PropertyMap;
import com.healthmarketscience.jackcess.Row;
break;
}
- UsageMap colOwnedPages = UsageMap.read(
- getDatabase(), tableBuffer, false);
- UsageMap colFreeSpacePages = UsageMap.read(
- getDatabase(), tableBuffer, false);
-
+ int pos = tableBuffer.position();
+ UsageMap colOwnedPages = null;
+ UsageMap colFreeSpacePages = null;
+ try {
+ colOwnedPages = UsageMap.read(getDatabase(), tableBuffer, false);
+ colFreeSpacePages = UsageMap.read(getDatabase(), tableBuffer, false);
+ } catch(IllegalStateException e) {
+ // ignore invalid usage map info
+ colOwnedPages = null;
+ colFreeSpacePages = null;
+ tableBuffer.position(pos + 8);
+ LOG.warn("Table " + _name + " invalid column " + umapColNum +
+ " usage map definition: " + e);
+ }
+
for(ColumnImpl col : _columns) {
if(col.getColumnNumber() == umapColNum) {
col.setUsageMaps(colOwnedPages, colFreeSpacePages);
int rowNum, boolean assumeOutOfRangeBitsOn)
throws IOException
{
+ if(pageNum <= 0) {
+ // usage maps will never appear on page 0 (or less)
+ throw new IllegalStateException("Invalid usage map page number " + pageNum);
+ }
+
JetFormat format = database.getFormat();
PageChannel pageChannel = database.getPageChannel();
ByteBuffer tableBuffer = pageChannel.createPageBuffer();