Author: alg
Date: Thu Jan 30 21:34:57 2014
New Revision: 1562980

URL: http://svn.apache.org/r1562980
Log:
i12355 Corrected case that in WinSalGraphics::setClipRegion an empty Polygon is 
handed over

Modified:
    openoffice/trunk/main/vcl/win/source/gdi/salgdi.cxx

Modified: openoffice/trunk/main/vcl/win/source/gdi/salgdi.cxx
URL: 
http://svn.apache.org/viewvc/openoffice/trunk/main/vcl/win/source/gdi/salgdi.cxx?rev=1562980&r1=1562979&r2=1562980&view=diff
==============================================================================
--- openoffice/trunk/main/vcl/win/source/gdi/salgdi.cxx (original)
+++ openoffice/trunk/main/vcl/win/source/gdi/salgdi.cxx Thu Jan 30 21:34:57 2014
@@ -1017,13 +1017,19 @@ bool WinSalGraphics::setClipRegion( cons
         }
 
         // create clip region from ClipRgnData
-        if ( mpClipRgnData->rdh.nCount == 1 )
+        if(0 == mpClipRgnData->rdh.nCount)
+        {
+            // #123585# region is empty; this may happen when e.g. a 
PolyPolygon is given
+            // that contains no polygons or only empty ones (no width/height). 
This is
+            // perfectly fine and we are done, except setting it (see end of 
method)
+        }
+        else if(1 == mpClipRgnData->rdh.nCount)
         {
             RECT* pRect = &(mpClipRgnData->rdh.rcBound);
             mhRegion = CreateRectRgn( pRect->left, pRect->top,
                                                      pRect->right, 
pRect->bottom );
         }
-        else if( mpClipRgnData->rdh.nCount > 1 )
+        else if(mpClipRgnData->rdh.nCount > 1)
         {
             ULONG nSize = mpClipRgnData->rdh.nRgnSize+sizeof(RGNDATAHEADER);
             mhRegion = ExtCreateRegion( NULL, nSize, mpClipRgnData );
@@ -1063,8 +1069,14 @@ bool WinSalGraphics::setClipRegion( cons
         //
         //bool bBla = true;
     }
+    else
+    {
+        // #123585# See above, this is a valid case, execute it
+        SelectClipRgn( getHDC(), 0 );
+    }
 
-       return mhRegion != 0;
+    // #123585# retval no longer dependent of mhRegion, see TaskId comments 
above
+    return true;
 }
 
 // -----------------------------------------------------------------------


Reply via email to