vcl/inc/impfont.hxx | 8 +++++--- vcl/source/gdi/font.cxx | 10 ++++++---- 2 files changed, 11 insertions(+), 7 deletions(-)
New commits: commit 4afd9a501eae7c17c3ab8adf70d2d0146bd83fe1 Author: Eike Rathke <[email protected]> Date: Fri May 10 11:44:15 2013 +0200 Font refcount is not uint16 (anymore) Change-Id: I1aa89a8d6f712abb4f768a413ebac29e14612484 diff --git a/vcl/inc/impfont.hxx b/vcl/inc/impfont.hxx index 0d91254..1ac8bd6 100644 --- a/vcl/inc/impfont.hxx +++ b/vcl/inc/impfont.hxx @@ -32,6 +32,8 @@ // - Impl_Font - // ------------ +typedef sal_uInt32 FontRefCount; + class Impl_Font { public: @@ -50,7 +52,7 @@ private: friend class Font; void AskConfig(); - int mnRefCount; + FontRefCount mnRefCount; String maFamilyName; String maStyleName; Size maSize; @@ -99,7 +101,7 @@ private: long mnLineHeight; // Ascent+Descent+EmphasisMark long mnSlant; // Slant sal_uInt16 mnMiscFlags; // Misc Flags - sal_uInt32 mnRefCount; // Reference Counter + FontRefCount mnRefCount; // Reference Counter enum { DEVICE_FLAG=1, SCALABLE_FLAG=2, LATIN_FLAG=4, CJK_FLAG=8, CTL_FLAG=16 }; @@ -206,7 +208,7 @@ private: const sal_uInt16* mpGlyphIds; // individual glyphid mappings int mnRangeCount; int mnCharCount; // covered codepoints - mutable int mnRefCount; + mutable FontRefCount mnRefCount; }; // CmapResult is a normalized version of the many CMAP formats diff --git a/vcl/source/gdi/font.cxx b/vcl/source/gdi/font.cxx index 4d313c5..94c64e1 100644 --- a/vcl/source/gdi/font.cxx +++ b/vcl/source/gdi/font.cxx @@ -240,11 +240,12 @@ Font::Font( const Font& rFont ) { DBG_CTOR( Font, NULL ); DBG_CHKOBJ( &rFont, Font, NULL ); - DBG_ASSERT( rFont.mpImplFont->mnRefCount < 0xFFFE, "Font: RefCount overflow" ); + bool bRefIncrementable = rFont.mpImplFont->mnRefCount < ::std::numeric_limits<FontRefCount>::max(); + DBG_ASSERT( bRefIncrementable, "Font: RefCount overflow" ); mpImplFont = rFont.mpImplFont; // do not count static objects (where RefCount is zero) - if ( mpImplFont->mnRefCount ) + if ( mpImplFont->mnRefCount && bRefIncrementable ) mpImplFont->mnRefCount++; } @@ -579,11 +580,12 @@ Font& Font::operator=( const Font& rFont ) { DBG_CHKTHIS( Font, NULL ); DBG_CHKOBJ( &rFont, Font, NULL ); - DBG_ASSERT( rFont.mpImplFont->mnRefCount < 0xFFFE, "Font: RefCount overflow" ); + bool bRefIncrementable = rFont.mpImplFont->mnRefCount < ::std::numeric_limits<FontRefCount>::max(); + DBG_ASSERT( bRefIncrementable, "Font: RefCount overflow" ); // Increment RefCount first, so that we can reference ourselves // RefCount == 0 for static objects - if ( rFont.mpImplFont->mnRefCount ) + if ( rFont.mpImplFont->mnRefCount && bRefIncrementable ) rFont.mpImplFont->mnRefCount++; // If it's not static ImplData and if it's the last reference, delete it _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
