aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPJ Fanning <fanningpj@apache.org>2019-03-14 04:01:10 +0000
committerPJ Fanning <fanningpj@apache.org>2019-03-14 04:01:10 +0000
commit126606c838dcba5d937de565661bd464abdbaab4 (patch)
treed59a2a3ec75ca34717ee27a55773d8c59fdb59f9
parent7f12edf4165db70c6d282de1989b147464148188 (diff)
downloadpoi-126606c838dcba5d937de565661bd464abdbaab4.tar.gz
poi-126606c838dcba5d937de565661bd464abdbaab4.zip
fix some cases where iterator usage does not check hasNext
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1855480 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--src/java/org/apache/poi/ss/util/ImageUtils.java43
-rw-r--r--src/ooxml/java/org/apache/poi/xdgf/usermodel/section/GeometrySection.java2
-rw-r--r--src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFTextParagraph.java2
3 files changed, 24 insertions, 23 deletions
diff --git a/src/java/org/apache/poi/ss/util/ImageUtils.java b/src/java/org/apache/poi/ss/util/ImageUtils.java
index af54e26df3..9a2b1778c7 100644
--- a/src/java/org/apache/poi/ss/util/ImageUtils.java
+++ b/src/java/org/apache/poi/ss/util/ImageUtils.java
@@ -59,7 +59,7 @@ public class ImageUtils {
*
* @return image dimension in pixels
*/
- public static Dimension getImageDimension(InputStream is, int type){
+ public static Dimension getImageDimension(InputStream is, int type) {
Dimension size = new Dimension();
switch (type){
@@ -70,28 +70,29 @@ public class ImageUtils {
case Workbook.PICTURE_TYPE_DIB:
try {
//read the image using javax.imageio.*
- ImageInputStream iis = ImageIO.createImageInputStream( is );
- try {
+ try (ImageInputStream iis = ImageIO.createImageInputStream(is)) {
Iterator<ImageReader> i = ImageIO.getImageReaders( iis );
- ImageReader r = i.next();
- try {
- r.setInput( iis );
- BufferedImage img = r.read(0);
-
- int[] dpi = getResolution(r);
-
- //if DPI is zero then assume standard 96 DPI
- //since cannot divide by zero
- if (dpi[0] == 0) dpi[0] = PIXEL_DPI;
- if (dpi[1] == 0) dpi[1] = PIXEL_DPI;
-
- size.width = img.getWidth()*PIXEL_DPI/dpi[0];
- size.height = img.getHeight()*PIXEL_DPI/dpi[1];
- } finally {
- r.dispose();
+ if (i.hasNext()) {
+ ImageReader r = i.next();
+ try {
+ r.setInput( iis );
+ BufferedImage img = r.read(0);
+
+ int[] dpi = getResolution(r);
+
+ //if DPI is zero then assume standard 96 DPI
+ //since cannot divide by zero
+ if (dpi[0] == 0) dpi[0] = PIXEL_DPI;
+ if (dpi[1] == 0) dpi[1] = PIXEL_DPI;
+
+ size.width = img.getWidth()*PIXEL_DPI/dpi[0];
+ size.height = img.getHeight()*PIXEL_DPI/dpi[1];
+ } finally {
+ r.dispose();
+ }
+ } else {
+ logger.log(POILogger.WARN, "ImageIO found no images");
}
- } finally {
- iis.close();
}
} catch (IOException e) {
diff --git a/src/ooxml/java/org/apache/poi/xdgf/usermodel/section/GeometrySection.java b/src/ooxml/java/org/apache/poi/xdgf/usermodel/section/GeometrySection.java
index 504a336210..cb212e343b 100644
--- a/src/ooxml/java/org/apache/poi/xdgf/usermodel/section/GeometrySection.java
+++ b/src/ooxml/java/org/apache/poi/xdgf/usermodel/section/GeometrySection.java
@@ -98,7 +98,7 @@ public class GeometrySection extends XDGFSection {
Iterator<GeometryRow> rows = getCombinedRows().iterator();
// special cases
- GeometryRow first = rows.next();
+ GeometryRow first = rows.hasNext() ? rows.next() : null;
if (first instanceof Ellipse) {
return ((Ellipse)first).getPath();
diff --git a/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFTextParagraph.java b/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFTextParagraph.java
index e6a271da63..49b114512b 100644
--- a/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFTextParagraph.java
+++ b/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFTextParagraph.java
@@ -1220,7 +1220,7 @@ public final class HSLFTextParagraph implements TextParagraph<HSLFShape,HSLFText
assert(!paragraphs.isEmpty() && !paragraphs.get(0).getTextRuns().isEmpty());
Iterator<HSLFTextParagraph> paraIter = paragraphs.iterator();
- HSLFTextParagraph htp = paraIter.next(); // keep first
+ HSLFTextParagraph htp = paraIter.hasNext() ? paraIter.next() : null; // keep first
assert (htp != null);
while (paraIter.hasNext()) {
paraIter.next();