From afba4c2a2d43049585e8b2b26f6369d716e5fd89 Mon Sep 17 00:00:00 2001 From: Yegor Kozlov Date: Sun, 25 Nov 2012 11:53:50 +0000 Subject: [PATCH] Bugzilla 54188 - Avoid NPE in PPT2PNG git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1413339 13f79535-47bb-0310-9956-ffa450edef68 --- src/documentation/content/xdocs/status.xml | 1 + .../src/org/apache/poi/hslf/model/Freeform.java | 5 +++++ .../org/apache/poi/hslf/model/TestFreeform.java | 12 ++++++++++++ 3 files changed, 18 insertions(+) diff --git a/src/documentation/content/xdocs/status.xml b/src/documentation/content/xdocs/status.xml index f4ae431eee..cd23b88fed 100644 --- a/src/documentation/content/xdocs/status.xml +++ b/src/documentation/content/xdocs/status.xml @@ -34,6 +34,7 @@ + 54188 - Avoid NPE in PPT2PNG 52628 - Replace System.err info messages with a POILogger 54137 - improved performance of DataFormatter with Fractions 54099 - Ensure that CTHMerge and CTTcBorders go to poi-ooxml-schemas jar diff --git a/src/scratchpad/src/org/apache/poi/hslf/model/Freeform.java b/src/scratchpad/src/org/apache/poi/hslf/model/Freeform.java index 97c818e519..10c468ced7 100644 --- a/src/scratchpad/src/org/apache/poi/hslf/model/Freeform.java +++ b/src/scratchpad/src/org/apache/poi/hslf/model/Freeform.java @@ -244,6 +244,11 @@ public final class Freeform extends AutoShape { public java.awt.Shape getOutline(){ GeneralPath path = getPath(); + if(path == null) { + // return empty path if either GEOMETRY__VERTICES or GEOMETRY__SEGMENTINFO is missing, see Bugzilla 54188 + return new GeneralPath(); + } + Rectangle2D anchor = getAnchor2D(); Rectangle2D bounds = path.getBounds2D(); AffineTransform at = new AffineTransform(); diff --git a/src/scratchpad/testcases/org/apache/poi/hslf/model/TestFreeform.java b/src/scratchpad/testcases/org/apache/poi/hslf/model/TestFreeform.java index 73e31e5755..6ff4870386 100644 --- a/src/scratchpad/testcases/org/apache/poi/hslf/model/TestFreeform.java +++ b/src/scratchpad/testcases/org/apache/poi/hslf/model/TestFreeform.java @@ -71,4 +71,16 @@ public final class TestFreeform extends TestCase { java.awt.Shape path2 = p.getOutline(); assertTrue(new Area(path1).equals(new Area(path2))); } + + /** + * Avoid NPE in Freeform.getOutline() if either GEOMETRY__VERTICES or + * GEOMETRY__SEGMENTINFO is missing, see Bugzilla 54188 + */ + public void test54188() { + + Freeform p = new Freeform(); + GeneralPath path = (GeneralPath)p.getOutline(); + GeneralPath emptyPath = new GeneralPath(); + assertEquals(emptyPath.getBounds2D(), path.getBounds2D()); + } } -- 2.39.5