This commit is contained in:
Caolán McNamara 2011-09-07 10:39:00 +01:00
parent 07a40ef8eb
commit b92b053d67
3 changed files with 23 additions and 67 deletions

View File

@ -1,62 +0,0 @@
--- icu/source/layout/LookupProcessor.h 2011-02-03 09:20:27.657005678 +0000
+++ icu/source/layout/LookupProcessor.h 2011-02-03 09:25:34.498396208 +0000
@@ -58,6 +58,7 @@
const FeatureListTable *featureListTable;
FeatureMask *lookupSelectArray;
+ le_uint32 lookupSelectCount;
le_uint16 *lookupOrderArray;
le_uint32 lookupOrderCount;
--- icu/source/layout/LookupProcessor.cpp 2011-02-02 12:29:54.369077099 +0000
+++ icu/source/layout/LookupProcessor.cpp 2011-02-02 12:31:54.215503036 +0000
@@ -70,6 +70,10 @@
if (selectMask != 0) {
const LookupTable *lookupTable = lookupListTable->getLookupTable(lookup);
+
+ if (!lookupTable)
+ continue;
+
le_uint16 lookupFlags = SWAPW(lookupTable->lookupFlags);
glyphIterator.reset(lookupFlags, selectMask);
@@ -111,6 +115,9 @@
for (le_uint16 lookup = 0; lookup < lookupCount; lookup += 1) {
le_uint16 lookupListIndex = SWAPW(featureTable->lookupListIndexArray[lookup]);
+ if (lookupListIndex >= lookupSelectCount)
+ continue;
+
lookupSelectArray[lookupListIndex] |= featureMask;
lookupOrderArray[store++] = lookupListIndex;
}
@@ -122,7 +129,7 @@
Offset scriptListOffset, Offset featureListOffset, Offset lookupListOffset,
LETag scriptTag, LETag languageTag, const FeatureMap *featureMap, le_int32 featureMapCount, le_bool orderFeatures,
LEErrorCode& success)
- : lookupListTable(NULL), featureListTable(NULL), lookupSelectArray(NULL),
+ : lookupListTable(NULL), featureListTable(NULL), lookupSelectArray(NULL), lookupSelectCount(0),
lookupOrderArray(NULL), lookupOrderCount(0)
{
const ScriptListTable *scriptListTable = NULL;
@@ -170,6 +177,8 @@
lookupSelectArray[i] = 0;
}
+ lookupSelectCount = lookupListCount;
+
le_int32 count, order = 0;
le_int32 featureReferences = 0;
const FeatureTable *featureTable = NULL;
@@ -186,6 +195,10 @@
le_uint16 featureIndex = SWAPW(langSysTable->featureIndexArray[feature]);
featureTable = featureListTable->getFeatureTable(featureIndex, &featureTag);
+
+ if (!featureTable)
+ continue;
+
featureReferences += SWAPW(featureTable->lookupCount);
}

View File

@ -0,0 +1,14 @@
diff -urN icu.old/source/layout/LookupProcessor.cpp icu/source/layout/LookupProcessor.cpp
--- icu.old/source/layout/LookupProcessor.cpp 2011-09-05 18:35:11.221515458 +0200
+++ icu/source/layout/LookupProcessor.cpp 2011-09-05 18:41:30.021510913 +0200
@@ -201,7 +201,9 @@
if (requiredFeatureIndex != 0xFFFF) {
requiredFeatureTable = featureListTable->getFeatureTable(requiredFeatureIndex, &requiredFeatureTag);
- featureReferences += SWAPW(featureTable->lookupCount);
+ if (requiredFeatureTable) {
+ featureReferences += SWAPW(requiredFeatureTable->lookupCount);
+ }
}
lookupOrderArray = LE_NEW_ARRAY(le_uint16, featureReferences);

View File

@ -1,17 +1,17 @@
Name: icu Name: icu
Version: 4.6 Version: 4.8.1
Release: 2%{?dist} Release: 1%{?dist}
Summary: International Components for Unicode Summary: International Components for Unicode
Group: Development/Tools Group: Development/Tools
License: MIT and UCD and Public Domain License: MIT and UCD and Public Domain
URL: http://www.icu-project.org/ URL: http://www.icu-project.org/
Source: http://download.icu-project.org/files/icu4c/4.6/icu4c-4_6-src.tgz Source: http://download.icu-project.org/files/icu4c/4.8.1/icu4c-4_8_1-src.tgz
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildRequires: doxygen, autoconf BuildRequires: doxygen, autoconf
Requires: lib%{name} = %{version}-%{release} Requires: lib%{name} = %{version}-%{release}
Patch1: icu.8198.revert.icu5431.patch Patch1: icu.8198.revert.icu5431.patch
Patch2: icu.8320.freeserif.crash.patch Patch2: icu.8800.freeserif.crash.patch
%description %description
Tools and utilities for developing with icu. Tools and utilities for developing with icu.
@ -52,7 +52,7 @@ BuildArch: noarch
%prep %prep
%setup -q -n %{name} %setup -q -n %{name}
%patch1 -p2 -R -b .icu8198.revert.icu5431.patch %patch1 -p2 -R -b .icu8198.revert.icu5431.patch
%patch2 -p1 -b .icu8320.freeserif.crash.patch %patch2 -p1 -b .icu8800.freeserif.crash.patch
%build %build
cd source cd source
@ -140,6 +140,10 @@ rm -rf $RPM_BUILD_ROOT
%doc source/__docs/%{name}/html/* %doc source/__docs/%{name}/html/*
%changelog %changelog
* Wed Sep 07 2011 Caolán McNamara <caolanm@redhat.com> - 4.8.1-1
- Resolves: rhbz#681941 don't link unneccessary -lm, etc.
- add icu.8800.freeserif.crash.patch
* Tue Mar 08 2011 Caolán McNamara <caolanm@redhat.com> - 4.6-2 * Tue Mar 08 2011 Caolán McNamara <caolanm@redhat.com> - 4.6-2
- Resolves: rhbz#681941 don't link unneccessary -lm, etc. - Resolves: rhbz#681941 don't link unneccessary -lm, etc.