rpms/openoffice.org/F-13 openoffice.org.spec, 1.2196, 1.2197 workspace.vcl111.patch, 1.1, 1.2

Caolan McNamara caolanm at fedoraproject.org
Mon Jun 14 08:07:02 UTC 2010


Author: caolanm

Update of /cvs/pkgs/rpms/openoffice.org/F-13
In directory cvs01.phx2.fedoraproject.org:/tmp/cvs-serv9622/F-13

Modified Files:
	openoffice.org.spec workspace.vcl111.patch 
Log Message:
Resolves: rhbz#603298 crash in ImplFontCharMap::GetGlyphIndex


Index: openoffice.org.spec
===================================================================
RCS file: /cvs/pkgs/rpms/openoffice.org/F-13/openoffice.org.spec,v
retrieving revision 1.2196
retrieving revision 1.2197
diff -u -p -r1.2196 -r1.2197
--- openoffice.org.spec	11 Jun 2010 07:55:47 -0000	1.2196
+++ openoffice.org.spec	14 Jun 2010 08:07:00 -0000	1.2197
@@ -4233,8 +4233,9 @@ fi
 %endif
 
 %changelog
-* Fri Jun 11 2010 Caolán McNamara <caolanm at redhat.com> - 1:3.2.0-12.25-UNRELEASED
+* Mon Jun 14 2010 Caolán McNamara <caolanm at redhat.com> - 1:3.2.0-12.25-UNRELEASED
 - Resolves: rhbz#602631 dual head fixes add workspace.ooo321gsl05.patch
+- Resolves: rhbz#603298 crash in ImplFontCharMap::GetGlyphIndex
 
 * Sat Jun 05 2010 Caolán McNamara <caolanm at redhat.com> - 1:3.2.0-12.24
 - Resolves: CVE-2010-0395 openoffice.org-3.2.1.pyuno.patch

workspace.vcl111.patch:
 source/gdi/metric.cxx                 |    7 ++++---
 source/gdi/outdev3.cxx                |    1 +
 source/glyphs/gcach_ftyp.cxx          |    2 --
 unx/source/fontmanager/fontconfig.cxx |   15 ++++++++++++++-
 unx/source/gdi/salgdi3.cxx            |    2 +-
 util/makefile.mk                      |    1 +
 6 files changed, 21 insertions(+), 7 deletions(-)

Index: workspace.vcl111.patch
===================================================================
RCS file: /cvs/pkgs/rpms/openoffice.org/F-13/workspace.vcl111.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -p -r1.1 -r1.2
--- workspace.vcl111.patch	7 May 2010 12:55:07 -0000	1.1
+++ workspace.vcl111.patch	14 Jun 2010 08:07:00 -0000	1.2
@@ -36,3 +36,64 @@ diff -r 2042f9e3d949 vcl/util/makefile.m
              $(TOOLSLIB)         \
              $(VOSLIB)           \
              $(BASEGFXLIB)	\
+diff -ru vcl/source/gdi/metric.cxx vcl/source/gdi/metric.cxx
+--- a/vcl/source/gdi/metric.cxx	2010-06-12 21:08:54.000000000 +0100
++++ b/vcl/source/gdi/metric.cxx	2010-06-14 09:00:44.000000000 +0100
+@@ -386,13 +388,14 @@
+         const bool bSymbolic = (mpRangeCodes[0]>=0xF000) & (mpRangeCodes[1]<=0xF0FF);
+         if( !bSymbolic )
+             return 0;
+-        // check for symbol aliasing (U+F0xx -> U+00xx)
+-        nRange = ImplFindRangeIndex( cChar | 0xF000 );
++        // check for symbol aliasing (U+00xx <-> U+F0xx)
++        cChar |= 0xF000;
++        nRange = ImplFindRangeIndex( cChar );
+     }
+     // check that we are inside a range
+     if( (nRange & 1) != 0 )
+         return 0;
+-    
++
+     // get glyph index directly or indirectly
+     int nGlyphIndex = cChar - mpRangeCodes[ nRange ];
+     const int nStartIndex = mpStartGlyphs[ nRange/2 ];
+diff -ru vcl/source/glyphs/gcach_ftyp.cxx vcl/source/glyphs/gcach_ftyp.cxx
+--- a/vcl/source/glyphs/gcach_ftyp.cxx	2010-06-12 21:08:54.000000000 +0100
++++ b/vcl/source/glyphs/gcach_ftyp.cxx	2010-06-14 08:59:30.000000000 +0100
+@@ -1203,11 +1203,9 @@
+             // check if symbol aliasing helps
+             if( (aChar <= 0x00FF) && mpFontInfo->IsSymbolFont() )
+                 nGlyphIndex = FT_Get_Char_Index( maFaceFT, aChar | 0xF000 );
+-#if 0 // disabled for now because it introduced ae bad side-effect (#i88376#)
+             // Finally try the postscript name table
+             if (!nGlyphIndex)
+                 nGlyphIndex = psp::PrintFontManager::get().FreeTypeCharIndex( maFaceFT, aChar );
+-#endif
+         }
+         mpFontInfo->CacheGlyphIndex( aChar, nGlyphIndex );
+     }
+diff -ru vcl/unx/source/fontmanager/fontconfig.cxx vcl/unx/source/fontmanager/fontconfig.cxx
+--- a/vcl/unx/source/fontmanager/fontconfig.cxx	2010-06-12 21:09:11.000000000 +0100
++++ b/vcl/unx/source/fontmanager/fontconfig.cxx	2010-06-14 08:59:22.000000000 +0100
+@@ -823,7 +823,20 @@
+ int PrintFontManager::FreeTypeCharIndex( void *pFace, sal_uInt32 aChar )
+ {
+     FontCfgWrapper& rWrapper = FontCfgWrapper::get();
+-    return rWrapper.isValid() ? rWrapper.FcFreeTypeCharIndex( (FT_Face)pFace, aChar ) : 0;
++    int nRet = 0;
++    if (rWrapper.isValid())
++    {
++        FT_Face aFace = (FT_Face)pFace;
++        FT_CharMap hOrig = aFace->charmap;
++        nRet = rWrapper.FcFreeTypeCharIndex( aFace, aChar );
++        if (hOrig != aFace->charmap)
++        {
++	    //#i88376 FcFreeTypeCharIndex may change the Charmap without
++	    //resetting it back to the original
++	    FT_Set_Charmap(aFace, hOrig);
++        }
++    }
++    return nRet;
+ }
+ 
+ bool PrintFontManager::addFontconfigDir( const rtl::OString& rDirName )



More information about the scm-commits mailing list