https://bz.apache.org/bugzilla/show_bug.cgi?id=66230

            Bug ID: 66230
           Summary: SheetUtil.getDefaultCharWidth() should handle AWT NPE
                    instead of failing
           Product: POI
           Version: unspecified
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: major
          Priority: P2
         Component: SS Common
          Assignee: dev@poi.apache.org
          Reporter: pat...@rufflar.com
  Target Milestone: ---

Apache POI (e.g. SheetUtil.getDefaultCharWidth()) fails with a NPE when using
auto-sized columns and some system packages (e.g. fontconfig) are not installed
on the system.
Instead of failing, POI should rather catch the NPE and disable column
auto-sizing like it is doing in other scenarios/exception types.

Stacktrace (from poi 3.17):

 java.lang.NullPointerException
                at
java.desktop/sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1262)
                at
java.desktop/sun.awt.FontConfiguration.readFontConfigFile(FontConfiguration.java:225)
                at
java.desktop/sun.awt.FontConfiguration.init(FontConfiguration.java:107)
                at
java.desktop/sun.awt.X11FontManager.createFontConfiguration(X11FontManager.java:719)
                at
java.desktop/sun.font.SunFontManager$2.run(SunFontManager.java:367)
                at java.base/java.security.AccessController.doPrivileged(Native
Method)
                at
java.desktop/sun.font.SunFontManager.<init>(SunFontManager.java:312)
                at
java.desktop/sun.awt.FcFontManager.<init>(FcFontManager.java:35)
                at
java.desktop/sun.awt.X11FontManager.<init>(X11FontManager.java:56)
                at
java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native
Method)
                at
java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
                at
java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
                at
java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
                at
java.desktop/sun.font.FontManagerFactory$1.run(FontManagerFactory.java:84)
                at java.base/java.security.AccessController.doPrivileged(Native
Method)
                at
java.desktop/sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:74)
                at java.desktop/java.awt.Font.getFont2D(Font.java:497)
                at java.desktop/java.awt.Font.canDisplayUpTo(Font.java:2246)
                at
java.desktop/java.awt.font.TextLayout.singleFont(TextLayout.java:469)
                at
java.desktop/java.awt.font.TextLayout.<init>(TextLayout.java:530)
                at
org.apache.poi.ss.util.SheetUtil.getDefaultCharWidth(SheetUtil.java:275)
                at
org.apache.poi.xssf.streaming.AutoSizeColumnTracker.<init>(AutoSizeColumnTracker.java:117)
                at
org.apache.poi.xssf.streaming.SXSSFSheet.<init>(SXSSFSheet.java:82)
                at
org.apache.poi.xssf.streaming.SXSSFWorkbook.createAndRegisterSXSSFSheet(SXSSFWorkbook.java:658)
                at
org.apache.poi.xssf.streaming.SXSSFWorkbook.createSheet(SXSSFWorkbook.java:679)

-- 
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@poi.apache.org
For additional commands, e-mail: dev-h...@poi.apache.org

Reply via email to