aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJames Ahlborn <jtahlborn@yahoo.com>2015-10-31 12:19:37 +0000
committerJames Ahlborn <jtahlborn@yahoo.com>2015-10-31 12:19:37 +0000
commit86130160d596c64b92fb877abcc3be7bfb21aaae (patch)
tree68d5f54482a54912c05e4c74a8dcaf71c2c6d235 /src
parentbeb77e7da50a2e9bc761e08010491e2eee98a138 (diff)
downloadjackcess-86130160d596c64b92fb877abcc3be7bfb21aaae.tar.gz
jackcess-86130160d596c64b92fb877abcc3be7bfb21aaae.zip
Throw a prettier exception when maxing out the row size during row creation. fixes #127
git-svn-id: https://svn.code.sf.net/p/jackcess/code/jackcess/trunk@960 f203690c-595d-4dc9-a70b-905162fa7fd2
Diffstat (limited to 'src')
-rw-r--r--src/changes/changes.xml9
-rw-r--r--src/main/java/com/healthmarketscience/jackcess/impl/TableImpl.java12
2 files changed, 19 insertions, 2 deletions
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 925ffba..6da5920 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -4,6 +4,15 @@
<author email="javajedi@users.sf.net">Tim McCune</author>
</properties>
<body>
+ <release version="2.1.3" date="TBD">
+ <action dev="jahlborn" type="fix" system="SourceForge2" issue="127">
+ Throw a prettier exception when maxing out the row size during row
+ creation.
+ </action>
+ <action dev="jahlborn" type="update">
+ New site style!
+ </action>
+ </release>
<release version="2.1.2" date="2015-06-22">
<action dev="jahlborn" type="fix" system="SourceForge2" issue="125">
Handle reading null calculated values.
diff --git a/src/main/java/com/healthmarketscience/jackcess/impl/TableImpl.java b/src/main/java/com/healthmarketscience/jackcess/impl/TableImpl.java
index 7aea12a..541b27b 100644
--- a/src/main/java/com/healthmarketscience/jackcess/impl/TableImpl.java
+++ b/src/main/java/com/healthmarketscience/jackcess/impl/TableImpl.java
@@ -19,6 +19,7 @@ package com.healthmarketscience.jackcess.impl;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.StringWriter;
+import java.nio.BufferOverflowException;
import java.nio.ByteBuffer;
import java.nio.charset.Charset;
import java.util.ArrayList;
@@ -1571,7 +1572,7 @@ public class TableImpl implements Table
int rowSize = rowData.remaining();
if (rowSize > getFormat().MAX_ROW_SIZE) {
throw new IOException(withErrorContext(
- "Row size " + rowSize + " is too large"));
+ "Row size " + rowSize + " is too large"));
}
// get page with space
@@ -2148,7 +2149,14 @@ public class TableImpl implements Table
// above. add that space back so we don't double count
maxRowSize += getFormat().SIZE_LONG_VALUE_DEF;
}
- buffer.put(varDataBuf);
+ try {
+ buffer.put(varDataBuf);
+ } catch(BufferOverflowException e) {
+ // if the data is too big for the buffer, then we have gone over
+ // the max row size
+ throw new IOException(withErrorContext(
+ "Row size " + buffer.limit() + " is too large"));
+ }
}
// we do a loop here so that we fill in offsets for deleted columns