From e85eadc888285a42561cc52133172cf5f4317da2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com> Date: Tue, 1 Oct 2013 16:23:31 +0100 Subject: [PATCH] Resolves: rhbz#1010995 div by 0 on some bizarre corner case Change-Id: Ief192ac36df7f62c9e157dce9050b37297ccf0a4 --- vcl/unx/generic/app/saldisp.cxx | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/vcl/unx/generic/app/saldisp.cxx b/vcl/unx/generic/app/saldisp.cxx index c7cf6e4..713e9c3 100644 --- a/vcl/unx/generic/app/saldisp.cxx +++ b/vcl/unx/generic/app/saldisp.cxx @@ -596,11 +596,22 @@ void SalDisplay::Init() } if( mbExactResolution == false ) { - aResolution_ = - Pair( DPI( WidthOfScreen( DefaultScreenOfDisplay( pDisp_ ) ), - DisplayWidthMM ( pDisp_, m_nXDefaultScreen.getXScreen() ) ), - DPI( HeightOfScreen( DefaultScreenOfDisplay( pDisp_ ) ), - DisplayHeightMM( pDisp_, m_nXDefaultScreen.getXScreen() ) ) ); + int nDisplayWidth = DisplayWidthMM ( pDisp_, m_nXDefaultScreen.getXScreen() ); + int nDisplayHeight = DisplayHeightMM( pDisp_, m_nXDefaultScreen.getXScreen() ); + + if (nDisplayHeight == 0 || nDisplayWidth == 0) + { + aResolution_ = Pair( 96, 96 ); + SAL_WARN("vcl", "screen width/height reported as 0!, using fallback 96dpi"); + } + else + { + aResolution_ = + Pair( DPI( WidthOfScreen( DefaultScreenOfDisplay( pDisp_ ) ), + nDisplayWidth ), + DPI( HeightOfScreen( DefaultScreenOfDisplay( pDisp_ ) ), + nDisplayHeight ) ); + } } nMaxRequestSize_ = XExtendedMaxRequestSize( pDisp_ ) * 4; -- 1.8.5.3