diff options
author | PJ Fanning <fanningpj@apache.org> | 2019-03-14 04:01:10 +0000 |
---|---|---|
committer | PJ Fanning <fanningpj@apache.org> | 2019-03-14 04:01:10 +0000 |
commit | 126606c838dcba5d937de565661bd464abdbaab4 (patch) | |
tree | d59a2a3ec75ca34717ee27a55773d8c59fdb59f9 | |
parent | 7f12edf4165db70c6d282de1989b147464148188 (diff) | |
download | poi-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
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(); |