From 608a49084f8c6599f8adef56b6c1480c3e293c04 Mon Sep 17 00:00:00 2001 From: root Date: Thu, 5 Apr 2012 00:01:23 +0000 Subject: Thu Apr 5 00:01:22 UTC 2012 --- extra/freetype2/PKGBUILD | 16 +++++-- extra/freetype2/bug35833.patch | 103 +++++++++++++++++++++++++++++++++++++++++ extra/freetype2/bug35847.patch | 28 +++++++++++ 3 files changed, 143 insertions(+), 4 deletions(-) create mode 100644 extra/freetype2/bug35833.patch create mode 100644 extra/freetype2/bug35847.patch (limited to 'extra/freetype2') diff --git a/extra/freetype2/PKGBUILD b/extra/freetype2/PKGBUILD index 6cbf66f72..849c87353 100644 --- a/extra/freetype2/PKGBUILD +++ b/extra/freetype2/PKGBUILD @@ -1,9 +1,9 @@ -# $Id: PKGBUILD 153269 2012-03-12 19:00:15Z jgc $ +# $Id: PKGBUILD 155391 2012-04-03 10:23:46Z jgc $ # Maintainer: Jan de Groot pkgname=freetype2 pkgver=2.4.9 -pkgrel=1 +pkgrel=2 pkgdesc="TrueType font rendering library" arch=(i686 x86_64) license=('GPL') @@ -12,16 +12,24 @@ depends=('zlib' 'bzip2' 'sh') options=('!libtool') source=(http://downloads.sourceforge.net/sourceforge/freetype/freetype-${pkgver}.tar.bz2 freetype-2.3.0-enable-spr.patch - freetype-2.2.1-enable-valid.patch) + freetype-2.2.1-enable-valid.patch + bug35833.patch + bug35847.patch) md5sums=('77a893dae81fd5b896632715ca041179' '816dc8619a6904a7385769433c0a8653' - '214119610444c9b02766ccee5e220680') + '214119610444c9b02766ccee5e220680' + '69bde731a06448c7e4828e96c74d45ee' + '41f9c0a5362bf2cd9a4d7557ddf98098') build() { cd "${srcdir}/freetype-${pkgver}" patch -Np1 -i "${srcdir}/freetype-2.3.0-enable-spr.patch" patch -Np1 -i "${srcdir}/freetype-2.2.1-enable-valid.patch" + #Upstream bugs fixed in git. Requested in FS#29034 + patch -Np1 -i "${srcdir}/bug35833.patch" + patch -Np1 -i "${srcdir}/bug35847.patch" + ./configure --prefix=/usr make } diff --git a/extra/freetype2/bug35833.patch b/extra/freetype2/bug35833.patch new file mode 100644 index 000000000..69ad25402 --- /dev/null +++ b/extra/freetype2/bug35833.patch @@ -0,0 +1,103 @@ +From 9a55cb7a71286154cb62e947ed1c183450a8004d Mon Sep 17 00:00:00 2001 +From: Werner Lemberg +Date: Wed, 14 Mar 2012 13:40:03 +0000 +Subject: Fix Savannah bug #35833. + +Based on the patch given in the bug report. + +* src/type1/t1load.c (IS_INCREMENTAL): New macro. +(read_binary_data): Add parameter `incremental'. +Update all callers using `IS_INCREMENTAL'. +--- +diff --git a/src/type1/t1load.c b/src/type1/t1load.c +index a0adfd4..4385417 100644 +--- a/src/type1/t1load.c ++++ b/src/type1/t1load.c +@@ -71,6 +71,13 @@ + #include "t1errors.h" + + ++#ifdef FT_CONFIG_OPTION_INCREMENTAL ++#define IS_INCREMENTAL ( face->root.internal->incremental_interface != 0 ) ++#else ++#define IS_INCREMENTAL 0 ++#endif ++ ++ + /*************************************************************************/ + /* */ + /* The macro FT_COMPONENT is used in trace mode. It is an implicit */ +@@ -1030,7 +1037,8 @@ + static int + read_binary_data( T1_Parser parser, + FT_Long* size, +- FT_Byte** base ) ++ FT_Byte** base, ++ FT_Bool incremental ) + { + FT_Byte* cur; + FT_Byte* limit = parser->root.limit; +@@ -1065,8 +1073,12 @@ + } + } + +- FT_ERROR(( "read_binary_data: invalid size field\n" )); +- parser->root.error = T1_Err_Invalid_File_Format; ++ if( !incremental ) ++ { ++ FT_ERROR(( "read_binary_data: invalid size field\n" )); ++ parser->root.error = T1_Err_Invalid_File_Format; ++ } ++ + return 0; + } + +@@ -1396,7 +1408,7 @@ + + idx = T1_ToInt( parser ); + +- if ( !read_binary_data( parser, &size, &base ) ) ++ if ( !read_binary_data( parser, &size, &base, IS_INCREMENTAL ) ) + return; + + /* The binary string is followed by one token, e.g. `NP' */ +@@ -1582,7 +1594,7 @@ + cur++; /* skip `/' */ + len = parser->root.cursor - cur; + +- if ( !read_binary_data( parser, &size, &base ) ) ++ if ( !read_binary_data( parser, &size, &base, IS_INCREMENTAL ) ) + return; + + /* for some non-standard fonts like `Optima' which provides */ +@@ -1871,7 +1883,7 @@ + + + parser->root.cursor = start_binary; +- if ( !read_binary_data( parser, &s, &b ) ) ++ if ( !read_binary_data( parser, &s, &b, IS_INCREMENTAL ) ) + return T1_Err_Invalid_File_Format; + have_integer = 0; + } +@@ -1884,7 +1896,7 @@ + + + parser->root.cursor = start_binary; +- if ( !read_binary_data( parser, &s, &b ) ) ++ if ( !read_binary_data( parser, &s, &b, IS_INCREMENTAL ) ) + return T1_Err_Invalid_File_Format; + have_integer = 0; + } +@@ -2160,9 +2172,7 @@ + type1->subrs_len = loader.subrs.lengths; + } + +-#ifdef FT_CONFIG_OPTION_INCREMENTAL +- if ( !face->root.internal->incremental_interface ) +-#endif ++ if ( !IS_INCREMENTAL ) + if ( !loader.charstrings.init ) + { + FT_ERROR(( "T1_Open_Face: no `/CharStrings' array in face\n" )); +-- +cgit v0.9.0.2 diff --git a/extra/freetype2/bug35847.patch b/extra/freetype2/bug35847.patch new file mode 100644 index 000000000..683cbc37e --- /dev/null +++ b/extra/freetype2/bug35847.patch @@ -0,0 +1,28 @@ +From b43e0f4413b2aafb88be8cb3fb7aaa84ac0b9102 Mon Sep 17 00:00:00 2001 +From: Werner Lemberg +Date: Sat, 17 Mar 2012 06:42:43 +0000 +Subject: [type1] Fix Savannah bug #35847. + +* src/type1/t1load.c (parse_subrs): Fix the loop exit condition; +we want to exit when we have run out of data. +--- +diff --git a/src/type1/t1load.c b/src/type1/t1load.c +index 4385417..5803fde 100644 +--- a/src/type1/t1load.c ++++ b/src/type1/t1load.c +@@ -1399,9 +1399,10 @@ + FT_Byte* base; + + +- /* If the next token isn't `dup' we are done. */ +- if ( parser->root.cursor + 4 < parser->root.limit && +- ft_strncmp( (char*)parser->root.cursor, "dup", 3 ) != 0 ) ++ /* If we are out of data, or if the next token isn't `dup', */ ++ /* we are done. */ ++ if ( parser->root.cursor + 4 >= parser->root.limit || ++ ft_strncmp( (char*)parser->root.cursor, "dup", 3 ) != 0 ) + break; + + T1_Skip_PS_Token( parser ); /* `dup' */ +-- +cgit v0.9.0.2 -- cgit v1.2.3-54-g00ecf