summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBehdad Esfahbod <behdad@gnome.org>2007-08-21 08:03:26 +0000
committerBehdad Esfahbod <behdad@src.gnome.org>2007-08-21 08:03:26 +0000
commit33a01668d50f493352eda749f7b6edba8d490bf6 (patch)
tree1a80e87b77ce96ac6cc1b3dfd9b3ec2087798fa3
parent7812c422f65b9a9d700d794b245c88c5dcea80b3 (diff)
downloadpango-33a01668d50f493352eda749f7b6edba8d490bf6.tar.gz
Bug 463430 – Gets stuck while "formatting message"
2007-08-21 Behdad Esfahbod <behdad@gnome.org> Bug 463430 – Gets stuck while "formatting message" * pango/opentype/harfbuzz-gpos.c (Lookup_PairPos1), (Lookup_PairPos2), (Lookup_PairPos), (Do_ContextPos): * pango/opentype/harfbuzz-gsub.c (Do_ContextSubst): Change type of intermediate index variable from FT_UShort to FT_ULong as it was overlowing with more than 65536 glyphs. svn path=/trunk/; revision=2411
-rw-r--r--ChangeLog10
-rw-r--r--pango/opentype/harfbuzz-gpos.c15
-rw-r--r--pango/opentype/harfbuzz-gsub.c2
3 files changed, 21 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index 59e9ebee..206732e9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2007-08-21 Behdad Esfahbod <behdad@gnome.org>
+
+ Bug 463430 – Gets stuck while "formatting message"
+
+ * pango/opentype/harfbuzz-gpos.c (Lookup_PairPos1),
+ (Lookup_PairPos2), (Lookup_PairPos), (Do_ContextPos):
+ * pango/opentype/harfbuzz-gsub.c (Do_ContextSubst):
+ Change type of intermediate index variable from FT_UShort to
+ FT_ULong as it was overlowing with more than 65536 glyphs.
+
2007-08-20 Behdad Esfahbod <behdad@gnome.org>
* README: Remove reference to required version of glib. It falls
diff --git a/pango/opentype/harfbuzz-gpos.c b/pango/opentype/harfbuzz-gpos.c
index 513f3fb5..6f0476ab 100644
--- a/pango/opentype/harfbuzz-gpos.c
+++ b/pango/opentype/harfbuzz-gpos.c
@@ -1518,7 +1518,7 @@ static void Free_PairPos( HB_GPOS_SubTable* st,
static FT_Error Lookup_PairPos1( GPOS_Instance* gpi,
HB_PairPosFormat1* ppf1,
HB_Buffer buffer,
- FT_UShort first_pos,
+ FT_ULong first_pos,
FT_UShort index,
FT_UShort format1,
FT_UShort format2 )
@@ -1560,7 +1560,7 @@ static FT_Error Lookup_PairPos1( GPOS_Instance* gpi,
static FT_Error Lookup_PairPos2( GPOS_Instance* gpi,
HB_PairPosFormat2* ppf2,
HB_Buffer buffer,
- FT_UShort first_pos,
+ FT_ULong first_pos,
FT_UShort format1,
FT_UShort format2 )
{
@@ -1600,7 +1600,8 @@ static FT_Error Lookup_PairPos( GPOS_Instance* gpi,
int nesting_level )
{
FT_Error error;
- FT_UShort index, property, first_pos;
+ FT_UShort index, property;
+ FT_ULong first_pos;
HB_GPOSHeader* gpos = gpi->gpos;
HB_PairPos* pp = &st->pair;
@@ -1631,8 +1632,12 @@ static FT_Error Lookup_PairPos( GPOS_Instance* gpi,
return error;
if ( buffer->in_pos == buffer->in_length )
- return HB_Err_Not_Covered;
+ {
+ buffer->in_pos = first_pos;
+ return HB_Err_Not_Covered;
+ }
(buffer->in_pos)++;
+
}
switch ( pp->PosFormat )
@@ -3137,7 +3142,7 @@ static FT_Error Do_ContextPos( GPOS_Instance* gpi,
int nesting_level )
{
FT_Error error;
- FT_UShort i, old_pos;
+ FT_ULong i, old_pos;
i = 0;
diff --git a/pango/opentype/harfbuzz-gsub.c b/pango/opentype/harfbuzz-gsub.c
index 00db6e86..23b87b85 100644
--- a/pango/opentype/harfbuzz-gsub.c
+++ b/pango/opentype/harfbuzz-gsub.c
@@ -1130,7 +1130,7 @@ static FT_Error Do_ContextSubst( HB_GSUBHeader* gsub,
int nesting_level )
{
FT_Error error;
- FT_UShort i, old_pos;
+ FT_ULong i, old_pos;
i = 0;