rpms/openoffice.org/devel openoffice.org.spec, 1.2238, 1.2239 workspace.vcl111.patch, 1.3, 1.4

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


Author: caolanm

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

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/devel/openoffice.org.spec,v
retrieving revision 1.2238
retrieving revision 1.2239
diff -u -p -r1.2238 -r1.2239
--- openoffice.org.spec	11 Jun 2010 07:45:16 -0000	1.2238
+++ openoffice.org.spec	14 Jun 2010 08:07:01 -0000	1.2239
@@ -1,6 +1,6 @@
 %define oootag OOO320
 %define ooomilestone 19
-%define rh_rpm_release 10
+%define rh_rpm_release 11
 
 # rhbz#465664 jar-repacking breaks help by reordering META-INF/MANIFEST.MF
 %define __jar_repack %{nil}
@@ -4199,6 +4199,9 @@ fi
 %endif
 
 %changelog
+* Mon Jun 14 2010 Caolán McNamara <caolanm at redhat.com> - 1:3.2.1-19.11
+- Resolves: rhbz#603298 crash in ImplFontCharMap::GetGlyphIndex
+
 * Thu Jun 10 2010 Caolán McNamara <caolanm at redhat.com> - 1:3.2.1-19.10
 - Resolves: rhbz#577823 openoffice.org-3.3.0.ooo112247.vcl.workaround.overlarge.replacements.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/devel/workspace.vcl111.patch,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -p -r1.3 -r1.4
--- workspace.vcl111.patch	27 Apr 2010 19:21:32 -0000	1.3
+++ workspace.vcl111.patch	14 Jun 2010 08:07:02 -0000	1.4
@@ -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