[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [ft-devel] Question about cidparse.c/cid_parser_new( )
From: |
mpsuzuki |
Subject: |
Re: [ft-devel] Question about cidparse.c/cid_parser_new( ) |
Date: |
Fri, 4 Nov 2005 11:34:24 +0900 |
Hi
On Wed, 2 Nov 2005 11:55:08 -0500
"Taek Kwan(TK) Lee" <address@hidden> wrote:
>When this function locates 'StartData' , it reads in by '256 + 10 -
>buff_len' from stream. Sometimes, the font data after 'StartData' is
>not very long and stream read function fails in this case.
>I think stream->size should be considered to get the correct reading length.
I think following patch realizes your proposal.
I want to test, could you provide some example
CIDFont that original FreeType cannot parse correctly?
Regards,
mpsuzuki
Index: src/cid/cidparse.c
===================================================================
RCS file: /cvsroot/freetype/freetype2/src/cid/cidparse.c,v
retrieving revision 1.44
diff -u -r1.44 cidparse.c
--- src/cid/cidparse.c 13 Feb 2005 21:42:42 -0000 1.44
+++ src/cid/cidparse.c 4 Nov 2005 02:33:28 -0000
@@ -101,8 +101,15 @@
p = buffer + buff_len;
- if ( FT_STREAM_READ( p, 256 + 10 - buff_len ) )
- goto Exit;
+ {
+ FT_ULong oldpos = FT_STREAM_POS();
+ FT_ULong size = stream->size - oldpos;
+ FT_Int max_read_len = 256 + 10 - buff_len;
+
+
+ if ( FT_STREAM_READ( p, max_read_len > size ? size : max_read_len ) )
+ goto Exit;
+ }
top_position = FT_STREAM_POS() - buff_len;
buff_len = 256 + 10;
Re: [ft-devel] Question about cidparse.c/cid_parser_new( ), Werner LEMBERG, 2005/11/08