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