aboutsummaryrefslogtreecommitdiff
path: root/freetype/src/sfnt/ttcmap.c
diff options
context:
space:
mode:
authormarha <marha@users.sourceforge.net>2010-08-06 11:48:36 +0000
committermarha <marha@users.sourceforge.net>2010-08-06 11:48:36 +0000
commit20ff8ddf2d9bb41050d10bbc75d61b9161880c7c (patch)
tree22566fcd9663b2baa565cd0c64eaa662d6ba03ee /freetype/src/sfnt/ttcmap.c
parentc29011f2831315d3da9c4727c1e626d80520b97a (diff)
parent6849d83857b4e470a44ad8b6aa5cfb283fd64c89 (diff)
downloadvcxsrv-20ff8ddf2d9bb41050d10bbc75d61b9161880c7c.tar.gz
vcxsrv-20ff8ddf2d9bb41050d10bbc75d61b9161880c7c.tar.bz2
vcxsrv-20ff8ddf2d9bb41050d10bbc75d61b9161880c7c.zip
svn merge ^/branches/released .
Diffstat (limited to 'freetype/src/sfnt/ttcmap.c')
-rw-r--r--freetype/src/sfnt/ttcmap.c22
1 files changed, 15 insertions, 7 deletions
diff --git a/freetype/src/sfnt/ttcmap.c b/freetype/src/sfnt/ttcmap.c
index e943a47ce..42da38074 100644
--- a/freetype/src/sfnt/ttcmap.c
+++ b/freetype/src/sfnt/ttcmap.c
@@ -4,7 +4,7 @@
/* */
/* TrueType character mapping table (cmap) support (body). */
/* */
-/* Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by */
+/* Copyright 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 by */
/* David Turner, Robert Wilhelm, and Werner Lemberg. */
/* */
/* This file is part of the FreeType project, and may only be used, */
@@ -2689,7 +2689,7 @@
FT_Memory memory )
{
FT_UInt32 old_max = cmap->max_results;
- FT_Error error = 0;
+ FT_Error error = SFNT_Err_Ok;
if ( num_results > cmap->max_results )
@@ -2787,7 +2787,8 @@
}
/* and the non-default table (these glyphs are specified here) */
- if ( nondefOff != 0 ) {
+ if ( nondefOff != 0 )
+ {
FT_Byte* ndp = table + nondefOff;
FT_ULong numMappings = TT_NEXT_ULONG( ndp );
FT_ULong i, lastUni = 0;
@@ -3375,7 +3376,7 @@
clazz[i] = NULL;
*output_class = clazz;
- return FT_Err_Ok;
+ return SFNT_Err_Ok;
}
#endif /*FT_CONFIG_OPTION_PIC*/
@@ -3391,11 +3392,12 @@
FT_Byte* limit = table + face->cmap_size;
FT_UInt volatile num_cmaps;
FT_Byte* volatile p = table;
- FT_Library library = FT_FACE_LIBRARY(face);
- FT_UNUSED(library);
+ FT_Library library = FT_FACE_LIBRARY( face );
+
+ FT_UNUSED( library );
- if ( p + 4 > limit )
+ if ( !p || p + 4 > limit )
return SFNT_Err_Invalid_Table;
/* only recognize format 0 */
@@ -3409,6 +3411,12 @@
}
num_cmaps = TT_NEXT_USHORT( p );
+#ifdef FT_MAX_CHARMAP_CACHEABLE
+ if ( num_cmaps > FT_MAX_CHARMAP_CACHEABLE )
+ FT_ERROR(( "tt_face_build_cmaps: too many cmap subtables(%d) "
+ "subtable#%d and later are loaded but cannot be searched\n",
+ num_cmaps, FT_MAX_CHARMAP_CACHEABLE + 1 ));
+#endif
for ( ; num_cmaps > 0 && p + 8 <= limit; num_cmaps-- )
{