From 75f5d3afc54d39299a0d4419ad7c470d995a4520 Mon Sep 17 00:00:00 2001 From: Javen O'Neal Date: Fri, 15 Jul 2016 06:12:37 +0000 Subject: [PATCH] bug 59858: describe why VBA macro reading failed git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1752778 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/poi/poifs/macros/VBAMacroReader.java | 4 ++++ .../apache/poi/poifs/macros/TestVBAMacroReader.java | 13 +++++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/java/org/apache/poi/poifs/macros/VBAMacroReader.java b/src/java/org/apache/poi/poifs/macros/VBAMacroReader.java index b221d3e39f..66ebab97dc 100644 --- a/src/java/org/apache/poi/poifs/macros/VBAMacroReader.java +++ b/src/java/org/apache/poi/poifs/macros/VBAMacroReader.java @@ -218,6 +218,10 @@ public class VBAMacroReader implements Closeable { modules.put(name, module); module.read(dis); } else { + if (module.offset == null) { + //This should not happen. bug 59858 + throw new IOException("Module offset for '" + name + "' was never read."); + } // we know the offset already, so decompress immediately on-the-fly long skippedBytes = dis.skip(module.offset); if (skippedBytes != module.offset) { diff --git a/src/testcases/org/apache/poi/poifs/macros/TestVBAMacroReader.java b/src/testcases/org/apache/poi/poifs/macros/TestVBAMacroReader.java index 6d2e9fe40d..2d98a4f38d 100644 --- a/src/testcases/org/apache/poi/poifs/macros/TestVBAMacroReader.java +++ b/src/testcases/org/apache/poi/poifs/macros/TestVBAMacroReader.java @@ -269,10 +269,15 @@ public class TestVBAMacroReader { try { fromFile(POIDataSamples.getSpreadSheetInstance(), "59858.xls"); fail("This test passes now. Please update the unit test and bug 59858."); - } catch (NullPointerException e) { - e.printStackTrace(); - // NPE when reading module.offset in VBAMacroReader.readMacros (approx line 258) - assumeTrue("This test currently fails with an NPE. See stdout.", false); + } catch (IOException e) { + if (e.getMessage().matches("Module offset for '.+' was never read.")) { + //e.printStackTrace(); + // NPE when reading module.offset in VBAMacroReader.readMacros (approx line 258) + assumeTrue("This test currently fails. See stdout.", false); + } else { + // something unexpected failed + throw e; + } } } } -- 2.39.5