Sophie

Sophie

distrib > Mageia > 4 > x86_64 > by-pkgid > f295be64ddde4cfa282218a01c2548ae > files > 11

libreoffice-4.1.6.2-2.mga4.src.rpm

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