[Libreoffice-commits] core.git: vcl/generic

Caolán McNamara caolanm at redhat.com
Thu Sep 11 06:25:46 PDT 2014


 vcl/generic/glyphs/gcach_ftyp.cxx |   11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

New commits:
commit 884229ed3ee2f84eb052c866e22bdb242a385788
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Thu Sep 11 14:16:05 2014 +0100

    server font dtor always calls ReleaseFaceFT
    
    therefore we must always call GetFaceFT in the ctor
    and not return early *before* calling GetFaceFT which
    could happen in case of inane font size requests, i.e.
    
    if( (mnWidth < 0) || (mfStretch > +64.0) || (mfStretch < -64.0) )
    
    valgrind+bff
    
    Change-Id: If22f8f7ff6aaed3ffa9eec68630da8601dfd5cae

diff --git a/vcl/generic/glyphs/gcach_ftyp.cxx b/vcl/generic/glyphs/gcach_ftyp.cxx
index a95ab5e..3d75744 100644
--- a/vcl/generic/glyphs/gcach_ftyp.cxx
+++ b/vcl/generic/glyphs/gcach_ftyp.cxx
@@ -488,6 +488,10 @@ ServerFont::ServerFont( const FontSelectPattern& rFSD, FtFontInfo* pFI )
     // it becomes reponsible for the ServerFont instantiation
     ((ImplServerFontEntry*)rFSD.mpFontEntry)->SetServerFont( this );
 
+    maFaceFT = pFI->GetFaceFT();
+    if( !maFaceFT )
+        return;
+
     if( rFSD.mnOrientation != 0 )
     {
         const double dRad = rFSD.mnOrientation * ( F_2PI / 3600.0 );
@@ -504,10 +508,6 @@ ServerFont::ServerFont( const FontSelectPattern& rFSD, FtFontInfo* pFI )
     if( (mnWidth < 0) || (mfStretch > +64.0) || (mfStretch < -64.0) )
         return;
 
-    maFaceFT = pFI->GetFaceFT();
-    if( !maFaceFT )
-        return;
-
     FT_New_Size( maFaceFT, &maSizeFT );
     FT_Activate_Size( maSizeFT );
     FT_Error rc = FT_Set_Pixel_Sizes( maFaceFT, mnWidth, rFSD.mnHeight );
@@ -623,8 +623,7 @@ const OString& ServerFont::GetFontFileName() const
 
 ServerFont::~ServerFont()
 {
-    if( mpLayoutEngine )
-        delete mpLayoutEngine;
+    delete mpLayoutEngine;
 
     if( maSizeFT )
         FT_Done_Size( maSizeFT );


More information about the Libreoffice-commits mailing list