webkitgtk4 package update
Signed-off-by: guibuilder_pel7x64builder0 <guibuilder@powerel.org>master
parent
b12bea362b
commit
3b3d22fa5f
SOURCES
SPECS
|
@ -0,0 +1,44 @@
|
|||
diff -ru orig.icu/source/layout/IndicReordering.cpp icu/source/layout/IndicReordering.cpp
|
||||
--- orig.icu/source/layout/IndicReordering.cpp 2016-04-15 18:30:15.788856946 +0200
|
||||
+++ icu/source/layout/IndicReordering.cpp 2016-04-15 18:30:39.244998995 +0200
|
||||
@@ -13,6 +13,7 @@
|
||||
|
||||
U_NAMESPACE_BEGIN
|
||||
|
||||
+#define ccmpFeatureTag LE_CCMP_FEATURE_TAG
|
||||
#define loclFeatureTag LE_LOCL_FEATURE_TAG
|
||||
#define initFeatureTag LE_INIT_FEATURE_TAG
|
||||
#define nuktFeatureTag LE_NUKT_FEATURE_TAG
|
||||
@@ -35,6 +36,7 @@
|
||||
#define caltFeatureTag LE_CALT_FEATURE_TAG
|
||||
#define kernFeatureTag LE_KERN_FEATURE_TAG
|
||||
|
||||
+#define ccmpFeatureMask 0x00000001UL
|
||||
#define loclFeatureMask 0x80000000UL
|
||||
#define rphfFeatureMask 0x40000000UL
|
||||
#define blwfFeatureMask 0x20000000UL
|
||||
@@ -73,7 +75,7 @@
|
||||
|
||||
#define repositionedGlyphMask 0x00000002UL
|
||||
|
||||
-#define basicShapingFormsMask ( loclFeatureMask | nuktFeatureMask | akhnFeatureMask | rkrfFeatureMask | blwfFeatureMask | halfFeatureMask | vatuFeatureMask | cjctFeatureMask )
|
||||
+#define basicShapingFormsMask ( ccmpFeatureMask | loclFeatureMask | nuktFeatureMask | akhnFeatureMask | rkrfFeatureMask | blwfFeatureMask | halfFeatureMask | vatuFeatureMask | cjctFeatureMask )
|
||||
#define positioningFormsMask ( kernFeatureMask | distFeatureMask | abvmFeatureMask | blwmFeatureMask )
|
||||
#define presentationFormsMask ( presFeatureMask | abvsFeatureMask | blwsFeatureMask | pstsFeatureMask | halnFeatureMask | caltFeatureMask )
|
||||
|
||||
@@ -484,6 +486,7 @@
|
||||
#define tagArray0 (rphfFeatureMask | tagArray1)
|
||||
|
||||
static const FeatureMap featureMap[] = {
|
||||
+ {ccmpFeatureTag, ccmpFeatureMask},
|
||||
{loclFeatureTag, loclFeatureMask},
|
||||
{initFeatureTag, initFeatureMask},
|
||||
{nuktFeatureTag, nuktFeatureMask},
|
||||
@@ -506,6 +509,7 @@
|
||||
static const le_int32 featureCount = LE_ARRAY_SIZE(featureMap);
|
||||
|
||||
static const FeatureMap v2FeatureMap[] = {
|
||||
+ {ccmpFeatureTag, ccmpFeatureMask},
|
||||
{loclFeatureTag, loclFeatureMask},
|
||||
{nuktFeatureTag, nuktFeatureMask},
|
||||
{akhnFeatureTag, akhnFeatureMask},
|
|
@ -0,0 +1,129 @@
|
|||
Index: icu/trunk/source/layout/IndicReordering.cpp
|
||||
===================================================================
|
||||
--- icu/trunk/source/layout/IndicReordering.cpp (revision 25772)
|
||||
+++ icu/trunk/source/layout/IndicReordering.cpp (revision 26090)
|
||||
@@ -126,4 +126,8 @@
|
||||
FeatureMask fSMFeatures;
|
||||
|
||||
+ LEUnicode fPreBaseConsonant;
|
||||
+ LEUnicode fPreBaseVirama;
|
||||
+ le_int32 fPBCIndex;
|
||||
+ FeatureMask fPBCFeatures;
|
||||
|
||||
void saveMatra(LEUnicode matra, le_int32 matraIndex, IndicClassTable::CharClass matraClass)
|
||||
@@ -172,5 +176,6 @@
|
||||
fMatraFeatures(0), fMPreOutIndex(-1), fMPreFixups(mpreFixups),
|
||||
fVMabove(0), fVMpost(0), fVMIndex(0), fVMFeatures(0),
|
||||
- fSMabove(0), fSMbelow(0), fSMIndex(0), fSMFeatures(0)
|
||||
+ fSMabove(0), fSMbelow(0), fSMIndex(0), fSMFeatures(0),
|
||||
+ fPreBaseConsonant(0), fPreBaseVirama(0), fPBCIndex(0), fPBCFeatures(0)
|
||||
{
|
||||
// nothing else to do...
|
||||
@@ -191,4 +196,6 @@
|
||||
fVMabove = fVMpost = 0;
|
||||
fSMabove = fSMbelow = 0;
|
||||
+
|
||||
+ fPreBaseConsonant = fPreBaseVirama = 0;
|
||||
}
|
||||
|
||||
@@ -386,4 +393,12 @@
|
||||
}
|
||||
|
||||
+ void notePreBaseConsonant(le_uint32 index,LEUnicode PBConsonant, LEUnicode PBVirama, FeatureMask features)
|
||||
+ {
|
||||
+ fPBCIndex = index;
|
||||
+ fPreBaseConsonant = PBConsonant;
|
||||
+ fPreBaseVirama = PBVirama;
|
||||
+ fPBCFeatures = features;
|
||||
+ }
|
||||
+
|
||||
void noteBaseConsonant()
|
||||
{
|
||||
@@ -465,4 +480,20 @@
|
||||
}
|
||||
|
||||
+ void writePreBaseConsonant()
|
||||
+ {
|
||||
+ // The TDIL spec says that consonant + virama + RRA should produce a rakar in Malayalam. However,
|
||||
+ // it seems that almost none of the fonts for Malayalam are set up to handle this.
|
||||
+ // So, we're going to force the issue here by using the rakar as defined with RA in most fonts.
|
||||
+
|
||||
+ if (fPreBaseConsonant == 0x0d31) { // RRA
|
||||
+ fPreBaseConsonant = 0x0d30; // RA
|
||||
+ }
|
||||
+
|
||||
+ if (fPreBaseConsonant != 0) {
|
||||
+ writeChar(fPreBaseConsonant, fPBCIndex, fPBCFeatures);
|
||||
+ writeChar(fPreBaseVirama,fPBCIndex-1,fPBCFeatures);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
le_int32 getOutputIndex()
|
||||
{
|
||||
@@ -723,4 +754,5 @@
|
||||
}
|
||||
|
||||
+
|
||||
IndicClassTable::CharClass charClass = CC_RESERVED;
|
||||
IndicClassTable::CharClass nextClass = CC_RESERVED;
|
||||
@@ -730,7 +762,9 @@
|
||||
le_bool seenVattu = FALSE;
|
||||
le_bool seenBelowBaseForm = FALSE;
|
||||
+ le_bool seenPreBaseForm = FALSE;
|
||||
le_bool hasNukta = FALSE;
|
||||
le_bool hasBelowBaseForm = FALSE;
|
||||
le_bool hasPostBaseForm = FALSE;
|
||||
+ le_bool hasPreBaseForm = FALSE;
|
||||
|
||||
if (postBase < markStart && classTable->isNukta(chars[postBase])) {
|
||||
@@ -746,12 +780,20 @@
|
||||
hasBelowBaseForm = IndicClassTable::hasBelowBaseForm(charClass) && !hasNukta;
|
||||
hasPostBaseForm = IndicClassTable::hasPostBaseForm(charClass) && !hasNukta;
|
||||
+ hasPreBaseForm = IndicClassTable::hasPreBaseForm(charClass) && !hasNukta;
|
||||
|
||||
if (IndicClassTable::isConsonant(charClass)) {
|
||||
if (postBaseLimit == 0 || seenVattu ||
|
||||
(baseConsonant > baseLimit && !classTable->isVirama(chars[baseConsonant - 1])) ||
|
||||
- !(hasBelowBaseForm || hasPostBaseForm)) {
|
||||
+ !(hasBelowBaseForm || hasPostBaseForm || hasPreBaseForm)) {
|
||||
break;
|
||||
}
|
||||
|
||||
+ // Note any pre-base consonants
|
||||
+ if ( baseConsonant == lastConsonant && lastConsonant > 0 &&
|
||||
+ hasPreBaseForm && classTable->isVirama(chars[baseConsonant - 1])) {
|
||||
+ output.notePreBaseConsonant(lastConsonant,chars[lastConsonant],chars[lastConsonant-1],tagArray2);
|
||||
+ seenPreBaseForm = TRUE;
|
||||
+
|
||||
+ }
|
||||
// consonants with nuktas are never vattus
|
||||
seenVattu = IndicClassTable::isVattu(charClass) && !hasNukta;
|
||||
@@ -786,10 +828,12 @@
|
||||
|
||||
// write any pre-base consonants
|
||||
+ output.writePreBaseConsonant();
|
||||
+
|
||||
le_bool supressVattu = TRUE;
|
||||
|
||||
for (i = baseLimit; i < baseConsonant; i += 1) {
|
||||
LEUnicode ch = chars[i];
|
||||
- // Don't put 'blwf' on first consonant.
|
||||
- FeatureMask features = (i == baseLimit? tagArray2 : tagArray1);
|
||||
+ // Don't put 'pstf' or 'blwf' on anything before the base consonant.
|
||||
+ FeatureMask features = tagArray1 & ~( pstfFeatureMask | blwfFeatureMask );
|
||||
|
||||
charClass = classTable->getCharClass(ch);
|
||||
@@ -842,5 +886,5 @@
|
||||
|
||||
// write below-base consonants
|
||||
- if (baseConsonant != lastConsonant) {
|
||||
+ if (baseConsonant != lastConsonant && !seenPreBaseForm) {
|
||||
for (i = bcSpan + 1; i < postBase; i += 1) {
|
||||
output.writeChar(chars[i], i, tagArray1);
|
||||
@@ -872,5 +916,5 @@
|
||||
// write post-base consonants
|
||||
// FIXME: does this put the right tags on post-base consonants?
|
||||
- if (baseConsonant != lastConsonant) {
|
||||
+ if (baseConsonant != lastConsonant && !seenPreBaseForm) {
|
||||
if (postBase <= lastConsonant) {
|
||||
for (i = postBase; i <= lastConsonant; i += 1) {
|
|
@ -0,0 +1,14 @@
|
|||
diff -ru orig.icu/source/layout/LookupProcessor.cpp icu/source/layout/LookupProcessor.cpp
|
||||
--- orig.icu/source/layout/LookupProcessor.cpp 2016-03-23 21:56:44.000000000 +0100
|
||||
+++ icu/source/layout/LookupProcessor.cpp 2016-04-15 18:19:26.903927005 +0200
|
||||
@@ -223,7 +223,9 @@
|
||||
|
||||
if (requiredFeatureIndex != 0xFFFF) {
|
||||
requiredFeatureTable = featureListTable->getFeatureTable(featureListTable, requiredFeatureIndex, &requiredFeatureTag, success);
|
||||
- featureReferences += SWAPW(requiredFeatureTable->lookupCount);
|
||||
+ if (requiredFeatureTable.isValid()) {
|
||||
+ featureReferences += SWAPW(requiredFeatureTable->lookupCount);
|
||||
+ }
|
||||
}
|
||||
|
||||
lookupOrderArray = LE_NEW_ARRAY(le_uint16, featureReferences);
|
|
@ -0,0 +1,96 @@
|
|||
diff -ru orig.icu/source/test/cintltst/cnmdptst.c icu/source/test/cintltst/cnmdptst.c
|
||||
--- orig.icu/source/test/cintltst/cnmdptst.c 2016-03-23 21:48:18.000000000 +0100
|
||||
+++ icu/source/test/cintltst/cnmdptst.c 2016-04-15 18:34:06.148251985 +0200
|
||||
@@ -186,6 +186,12 @@
|
||||
/* Test exponential pattern*/
|
||||
static void TestExponential(void)
|
||||
{
|
||||
+/* erAck: fails on armv7hl, https://bugzilla.redhat.com/show_bug.cgi?id=1239574 */
|
||||
+#if 1
|
||||
+ /* Actually only 3 tests fail, but given the nested structure depending on
|
||||
+ * array sizes there's no simple "disable this and that". */
|
||||
+ return;
|
||||
+#endif
|
||||
int32_t pat_length, val_length, lval_length;
|
||||
int32_t ival, ilval, p, v, lneed;
|
||||
UNumberFormat *fmt;
|
||||
diff -ru orig.icu/source/test/intltest/dcfmtest.cpp icu/source/test/intltest/dcfmtest.cpp
|
||||
--- orig.icu/source/test/intltest/dcfmtest.cpp 2016-03-23 21:48:38.000000000 +0100
|
||||
+++ icu/source/test/intltest/dcfmtest.cpp 2016-04-15 18:34:06.148251985 +0200
|
||||
@@ -279,6 +279,13 @@
|
||||
//
|
||||
formatLineMat.reset(testLine);
|
||||
if (formatLineMat.lookingAt(status)) {
|
||||
+/* erAck: fails on armv7hl, https://bugzilla.redhat.com/show_bug.cgi?id=1239574 */
|
||||
+#if 1
|
||||
+// [Formattable] file dcfmtest.txt, line 62: expected "12.35E5", got "1.235E6"
|
||||
+// [StringPiece] file dcfmtest.txt, line 62: expected "12.35E5", got "1.235E6"
|
||||
+ if (lineNum == 62)
|
||||
+ continue;
|
||||
+#endif
|
||||
execFormatTest(lineNum,
|
||||
formatLineMat.group(1, status), // Pattern
|
||||
formatLineMat.group(2, status), // rounding mode
|
||||
diff -ru orig.icu/source/test/intltest/numfmtspectest.cpp icu/source/test/intltest/numfmtspectest.cpp
|
||||
--- orig.icu/source/test/intltest/numfmtspectest.cpp 2016-03-23 21:48:40.000000000 +0100
|
||||
+++ icu/source/test/intltest/numfmtspectest.cpp 2016-04-15 18:34:06.148251985 +0200
|
||||
@@ -137,11 +137,14 @@
|
||||
|
||||
void NumberFormatSpecificationTest::TestScientificNotation() {
|
||||
assertPatternFr("1,23E4", 12345.0, "0.00E0", TRUE);
|
||||
+/* erAck: fails on armv7hl, https://bugzilla.redhat.com/show_bug.cgi?id=1239574 */
|
||||
+#if 0
|
||||
assertPatternFr("123,00E2", 12300.0, "000.00E0", TRUE);
|
||||
assertPatternFr("123,0E2", 12300.0, "000.0#E0", TRUE);
|
||||
assertPatternFr("123,0E2", 12300.1, "000.0#E0", TRUE);
|
||||
assertPatternFr("123,01E2", 12301.0, "000.0#E0", TRUE);
|
||||
assertPatternFr("123,01E+02", 12301.0, "000.0#E+00", TRUE);
|
||||
+#endif
|
||||
assertPatternFr("12,3E3", 12345.0, "##0.00E0", TRUE);
|
||||
assertPatternFr("12,300E3", 12300.1, "##0.0000E0", TRUE);
|
||||
assertPatternFr("12,30E3", 12300.1, "##0.000#E0", TRUE);
|
||||
@@ -221,6 +224,8 @@
|
||||
assertEquals("", "USD (433.22)", result, TRUE);
|
||||
}
|
||||
}
|
||||
+/* erAck: fails on armv7hl, https://bugzilla.redhat.com/show_bug.cgi?id=1239574 */
|
||||
+#if 0
|
||||
const char *paddedSciPattern = "QU**00.#####E0";
|
||||
assertPatternFr("QU***43,3E-1", 4.33, paddedSciPattern, TRUE);
|
||||
{
|
||||
@@ -242,6 +247,7 @@
|
||||
}
|
||||
// padding cannot work as intended with scientific notation.
|
||||
assertPatternFr("QU**43,32E-1", 4.332, paddedSciPattern, TRUE);
|
||||
+#endif
|
||||
}
|
||||
|
||||
void NumberFormatSpecificationTest::assertPatternFr(
|
||||
diff -ru orig.icu/source/test/intltest/numfmtst.cpp icu/source/test/intltest/numfmtst.cpp
|
||||
--- orig.icu/source/test/intltest/numfmtst.cpp 2016-03-23 21:48:40.000000000 +0100
|
||||
+++ icu/source/test/intltest/numfmtst.cpp 2016-04-15 18:34:06.150251997 +0200
|
||||
@@ -730,6 +730,12 @@
|
||||
void
|
||||
NumberFormatTest::TestExponential(void)
|
||||
{
|
||||
+/* erAck: fails on armv7hl, https://bugzilla.redhat.com/show_bug.cgi?id=1239574 */
|
||||
+#if 1
|
||||
+ /* Actually only 3 tests fail, but given the nested structure depending on
|
||||
+ * array sizes there's no simple "disable this and that". */
|
||||
+ return;
|
||||
+#endif
|
||||
UErrorCode status = U_ZERO_ERROR;
|
||||
DecimalFormatSymbols sym(Locale::getUS(), status);
|
||||
if (U_FAILURE(status)) { errcheckln(status, "FAIL: Bad status returned by DecimalFormatSymbols ct - %s", u_errorName(status)); return; }
|
||||
@@ -1846,8 +1852,11 @@
|
||||
(int32_t) 45678000, "5E7", status);
|
||||
expect(new DecimalFormat("00E0", US, status),
|
||||
(int32_t) 45678000, "46E6", status);
|
||||
+/* erAck: fails on armv7hl, https://bugzilla.redhat.com/show_bug.cgi?id=1239574 */
|
||||
+#if 0
|
||||
expect(new DecimalFormat("000E0", US, status),
|
||||
(int32_t) 45678000, "457E5", status);
|
||||
+#endif
|
||||
/*
|
||||
expect(new DecimalFormat("###E0", US, status),
|
||||
new Object[] { new Double(0.0000123), "12.3E-6",
|
|
@ -0,0 +1,156 @@
|
|||
Index: icu/trunk/source/common/locid.cpp
|
||||
===================================================================
|
||||
--- icu/source/common/locid.cpp (revision 39282)
|
||||
+++ icu/source/common/locid.cpp (revision 39384)
|
||||
@@ -45,4 +45,5 @@
|
||||
#include "ucln_cmn.h"
|
||||
#include "ustr_imp.h"
|
||||
+#include "charstr.h"
|
||||
|
||||
U_CDECL_BEGIN
|
||||
@@ -59,4 +60,10 @@
|
||||
static UHashtable *gDefaultLocalesHashT = NULL;
|
||||
static Locale *gDefaultLocale = NULL;
|
||||
+
|
||||
+/**
|
||||
+ * \def ULOC_STRING_LIMIT
|
||||
+ * strings beyond this value crash in CharString
|
||||
+ */
|
||||
+#define ULOC_STRING_LIMIT 357913941
|
||||
|
||||
U_NAMESPACE_END
|
||||
@@ -286,5 +293,5 @@
|
||||
else
|
||||
{
|
||||
- MaybeStackArray<char, ULOC_FULLNAME_CAPACITY> togo;
|
||||
+ UErrorCode status = U_ZERO_ERROR;
|
||||
int32_t size = 0;
|
||||
int32_t lsize = 0;
|
||||
@@ -292,5 +299,4 @@
|
||||
int32_t vsize = 0;
|
||||
int32_t ksize = 0;
|
||||
- char *p;
|
||||
|
||||
// Calculate the size of the resulting string.
|
||||
@@ -300,6 +306,12 @@
|
||||
{
|
||||
lsize = (int32_t)uprv_strlen(newLanguage);
|
||||
+ if ( lsize < 0 || lsize > ULOC_STRING_LIMIT ) { // int32 wrap
|
||||
+ setToBogus();
|
||||
+ return;
|
||||
+ }
|
||||
size = lsize;
|
||||
}
|
||||
+
|
||||
+ CharString togo(newLanguage, lsize, status); // start with newLanguage
|
||||
|
||||
// _Country
|
||||
@@ -307,4 +319,8 @@
|
||||
{
|
||||
csize = (int32_t)uprv_strlen(newCountry);
|
||||
+ if ( csize < 0 || csize > ULOC_STRING_LIMIT ) { // int32 wrap
|
||||
+ setToBogus();
|
||||
+ return;
|
||||
+ }
|
||||
size += csize;
|
||||
}
|
||||
@@ -321,4 +337,8 @@
|
||||
// remove trailing _'s
|
||||
vsize = (int32_t)uprv_strlen(newVariant);
|
||||
+ if ( vsize < 0 || vsize > ULOC_STRING_LIMIT ) { // int32 wrap
|
||||
+ setToBogus();
|
||||
+ return;
|
||||
+ }
|
||||
while( (vsize>1) && (newVariant[vsize-1] == SEP_CHAR) )
|
||||
{
|
||||
@@ -345,48 +365,30 @@
|
||||
{
|
||||
ksize = (int32_t)uprv_strlen(newKeywords);
|
||||
+ if ( ksize < 0 || ksize > ULOC_STRING_LIMIT ) {
|
||||
+ setToBogus();
|
||||
+ return;
|
||||
+ }
|
||||
size += ksize + 1;
|
||||
}
|
||||
|
||||
-
|
||||
// NOW we have the full locale string..
|
||||
-
|
||||
- /*if the whole string is longer than our internal limit, we need
|
||||
- to go to the heap for temporary buffers*/
|
||||
- if (size >= togo.getCapacity())
|
||||
- {
|
||||
- // If togo_heap could not be created, initialize with default settings.
|
||||
- if (togo.resize(size+1) == NULL) {
|
||||
- init(NULL, FALSE);
|
||||
- }
|
||||
- }
|
||||
-
|
||||
- togo[0] = 0;
|
||||
-
|
||||
// Now, copy it back.
|
||||
- p = togo.getAlias();
|
||||
- if ( lsize != 0 )
|
||||
- {
|
||||
- uprv_strcpy(p, newLanguage);
|
||||
- p += lsize;
|
||||
- }
|
||||
+
|
||||
+ // newLanguage is already copied
|
||||
|
||||
if ( ( vsize != 0 ) || (csize != 0) ) // at least: __v
|
||||
{ // ^
|
||||
- *p++ = SEP_CHAR;
|
||||
+ togo.append(SEP_CHAR, status);
|
||||
}
|
||||
|
||||
if ( csize != 0 )
|
||||
{
|
||||
- uprv_strcpy(p, newCountry);
|
||||
- p += csize;
|
||||
+ togo.append(newCountry, status);
|
||||
}
|
||||
|
||||
if ( vsize != 0)
|
||||
{
|
||||
- *p++ = SEP_CHAR; // at least: __v
|
||||
-
|
||||
- uprv_strncpy(p, newVariant, vsize); // Must use strncpy because
|
||||
- p += vsize; // of trimming (above).
|
||||
- *p = 0; // terminate
|
||||
+ togo.append(SEP_CHAR, status)
|
||||
+ .append(newVariant, vsize, status);
|
||||
}
|
||||
|
||||
@@ -394,19 +396,23 @@
|
||||
{
|
||||
if (uprv_strchr(newKeywords, '=')) {
|
||||
- *p++ = '@'; /* keyword parsing */
|
||||
+ togo.append('@', status); /* keyword parsing */
|
||||
}
|
||||
else {
|
||||
- *p++ = '_'; /* Variant parsing with a script */
|
||||
+ togo.append('_', status); /* Variant parsing with a script */
|
||||
if ( vsize == 0) {
|
||||
- *p++ = '_'; /* No country found */
|
||||
+ togo.append('_', status); /* No country found */
|
||||
}
|
||||
}
|
||||
- uprv_strcpy(p, newKeywords);
|
||||
- p += ksize;
|
||||
- }
|
||||
-
|
||||
+ togo.append(newKeywords, status);
|
||||
+ }
|
||||
+
|
||||
+ if (U_FAILURE(status)) {
|
||||
+ // Something went wrong with appending, etc.
|
||||
+ setToBogus();
|
||||
+ return;
|
||||
+ }
|
||||
// Parse it, because for example 'language' might really be a complete
|
||||
// string.
|
||||
- init(togo.getAlias(), FALSE);
|
||||
+ init(togo.data(), FALSE);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
diff -up icu/source/configure.ac.dont_use_clang_even_if_installed icu/source/configure.ac
|
||||
--- icu/source/configure.ac.dont_use_clang_even_if_installed 2017-02-10 13:36:23.708830671 +0100
|
||||
+++ icu/source/configure.ac 2017-02-10 13:37:00.618423307 +0100
|
||||
@@ -132,10 +132,10 @@ AC_SUBST(ENABLE_RELEASE)
|
||||
: ${CXXFLAGS=""}
|
||||
|
||||
# Checks for compilers
|
||||
-AC_PROG_CC([clang gcc cc c99 c89 xlc_r xlc cl.exe icc])
|
||||
+AC_PROG_CC([gcc cc c99 c89 xlc_r xlc cl.exe icc])
|
||||
# Make sure that we try clang++ first, which provides C++11 support.
|
||||
# The g++ compiler is less likely to support C++11.
|
||||
-AC_PROG_CXX([clang++ g++ c++ gpp xlC_r xlC aCC CC cxx cc++ cl.exe icc FCC KCC RCC])
|
||||
+AC_PROG_CXX([g++ c++ gpp xlC_r xlC aCC CC cxx cc++ cl.exe icc FCC KCC RCC])
|
||||
|
||||
# pkg-config is needed for harfbuzz support
|
||||
PKG_PROG_PKG_CONFIG([0.20])
|
|
@ -0,0 +1,128 @@
|
|||
Description: supply manual page for program that doesn't have one
|
||||
Author: Jay Berkenbilt <qjb@debian.org>
|
||||
Bug: http://bugs.icu-project.org/trac/ticket/7554
|
||||
|
||||
diff -r -u -N icu.orig/source/tools/gennorm2/gennorm2.8.in icu/source/tools/gennorm2/gennorm2.8.in
|
||||
--- icu.orig/source/tools/gennorm2/gennorm2.8.in 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ icu/source/tools/gennorm2/gennorm2.8.in 2013-02-25 16:43:28.297062638 +0100
|
||||
@@ -0,0 +1,71 @@
|
||||
+.\" Hey, Emacs! This is -*-nroff-*- you know...
|
||||
+.\"
|
||||
+.\" gennorm2.8: manual page for the gennorm2 utility
|
||||
+.\"
|
||||
+.\" Copyright (C) 2005-2006 International Business Machines Corporation and others
|
||||
+.\"
|
||||
+.TH GENNORM2 8 "15 March 2010" "ICU MANPAGE" "ICU @VERSION@ Manual"
|
||||
+.SH NAME
|
||||
+.B gennorm2
|
||||
+\- Builds binary data file with Unicode normalization data.
|
||||
+.SH SYNOPSIS
|
||||
+.B gennorm2
|
||||
+[
|
||||
+.BR "\-h\fP, \fB\-?\fP, \fB\-\-help"
|
||||
+]
|
||||
+[
|
||||
+.BR "\-V\fP, \fB\-\-version"
|
||||
+]
|
||||
+[
|
||||
+.BR "\-c\fP, \fB\-\-copyright"
|
||||
+]
|
||||
+[
|
||||
+.BR "\-v\fP, \fB\-\-verbose"
|
||||
+]
|
||||
+[
|
||||
+.BI "\-u\fP, \fB\-\-unicode" " unicode\-version\-number"
|
||||
+]
|
||||
+[
|
||||
+.BI "\-s\fP, \fB\-\-sourcedir" " source\-directory"
|
||||
+]
|
||||
+[
|
||||
+.BI "\-o\fP, \fB\-\-output" " output\-filename"
|
||||
+]
|
||||
+.BI "\fB\-\-fast"
|
||||
+.SH DESCRIPTION
|
||||
+.B gennorm2
|
||||
+reads text files that define Unicode normalization,
|
||||
+them, and builds a binary data file.
|
||||
+.SH OPTIONS
|
||||
+.TP
|
||||
+.BR "\-h\fP, \fB\-?\fP, \fB\-\-help"
|
||||
+Print help about usage and exit.
|
||||
+.TP
|
||||
+.BR "\-V\fP, \fB\-\-version"
|
||||
+Print the version of
|
||||
+.B gennorm2
|
||||
+and exit.
|
||||
+.TP
|
||||
+.BR "\-c\fP, \fB\-\-copyright"
|
||||
+Include a copyright notice.
|
||||
+.TP
|
||||
+.BR "\-v\fP, \fB\-\-verbose"
|
||||
+Display extra informative messages during execution.
|
||||
+.TP
|
||||
+.BR "\-u\fP, \fB\-\-unicode"
|
||||
+Specify Unicode version number, such as 5.2.0.
|
||||
+.TP
|
||||
+.BI "\-s\fP, \fB\-\-sourcedir" " source\-directory"
|
||||
+Specify the input directory.
|
||||
+.TP
|
||||
+.BI "\-s\fP, \fB\-\-sourcedir" " source\-directory"
|
||||
+Set the name of the output file.
|
||||
+.TP
|
||||
+.BI "\fB\-\-fast"
|
||||
+optimize the .nrm file for fast normalization,
|
||||
+which might increase its size (Writes fully decomposed
|
||||
+regular mappings instead of delta mappings.
|
||||
+You should measure the runtime speed to make sure that
|
||||
+this is a good trade-off.)
|
||||
+.SH COPYRIGHT
|
||||
+Copyright (C) 2009-2010 International Business Machines Corporation and others
|
||||
diff -r -u -N icu.orig/source/tools/gennorm2/Makefile.in icu/source/tools/gennorm2/Makefile.in
|
||||
--- icu.orig/source/tools/gennorm2/Makefile.in 2013-01-11 01:23:32.000000000 +0100
|
||||
+++ icu/source/tools/gennorm2/Makefile.in 2013-02-25 16:43:28.296062632 +0100
|
||||
@@ -16,8 +16,13 @@
|
||||
|
||||
TARGET_STUB_NAME = gennorm2
|
||||
|
||||
+SECTION = 8
|
||||
+
|
||||
+MAN_FILES = $(TARGET_STUB_NAME).$(SECTION)
|
||||
+
|
||||
+
|
||||
## Extra files to remove for 'make clean'
|
||||
-CLEANFILES = *~ $(DEPS)
|
||||
+CLEANFILES = *~ $(DEPS) $(MAN_FILES)
|
||||
|
||||
## Target information
|
||||
TARGET = $(BINDIR)/$(TARGET_STUB_NAME)$(EXEEXT)
|
||||
@@ -44,12 +49,16 @@
|
||||
dist: dist-local
|
||||
check: all check-local
|
||||
|
||||
-all-local: $(TARGET)
|
||||
+all-local: $(TARGET) $(MAN_FILES)
|
||||
|
||||
-install-local: all-local
|
||||
+install-local: all-local install-man
|
||||
$(MKINSTALLDIRS) $(DESTDIR)$(sbindir)
|
||||
$(INSTALL) $(TARGET) $(DESTDIR)$(sbindir)
|
||||
|
||||
+install-man: $(MAN_FILES)
|
||||
+ $(MKINSTALLDIRS) $(DESTDIR)$(mandir)/man$(SECTION)
|
||||
+ $(INSTALL_DATA) $? $(DESTDIR)$(mandir)/man$(SECTION)
|
||||
+
|
||||
dist-local:
|
||||
|
||||
clean-local:
|
||||
@@ -70,6 +79,11 @@
|
||||
$(POST_BUILD_STEP)
|
||||
|
||||
|
||||
+%.$(SECTION): $(srcdir)/%.$(SECTION).in
|
||||
+ cd $(top_builddir) \
|
||||
+ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
|
||||
+
|
||||
+
|
||||
ifeq (,$(MAKECMDGOALS))
|
||||
-include $(DEPS)
|
||||
else
|
|
@ -0,0 +1,145 @@
|
|||
Description: supply manual page for program that doesn't have one
|
||||
Author: Jay Berkenbilt <qjb@debian.org>
|
||||
Bug: http://bugs.icu-project.org/trac/ticket/7665
|
||||
erAck: adapted to ICU 56.1 icu/source/tools/icuinfo/Makefile.in
|
||||
|
||||
diff -Nur orig.icu/source/tools/icuinfo/icuinfo.1.in icu/source/tools/icuinfo/icuinfo.1.in
|
||||
--- orig.icu/source/tools/icuinfo/icuinfo.1.in 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ icu/source/tools/icuinfo/icuinfo.1.in 2015-10-27 19:19:35.184056800 +0100
|
||||
@@ -0,0 +1,76 @@
|
||||
+.\" Hey, Emacs! This is -*-nroff-*- you know...
|
||||
+.\"
|
||||
+.\" icuinfo.1: manual page for the icuinfo utility
|
||||
+.\"
|
||||
+.\" Copyright (C) 2005-2006 International Business Machines Corporation and others
|
||||
+.\"
|
||||
+.TH ICUINFO 1 "1 May 2010" "ICU MANPAGE" "ICU @VERSION@ Manual"
|
||||
+.SH NAME
|
||||
+.B icuinfo
|
||||
+\- Shows some basic info about the current ICU
|
||||
+.SH SYNOPSIS
|
||||
+.B icuinfo
|
||||
+[
|
||||
+.BR "\-h\fP, \fB\-?\fP, \fB\-\-help"
|
||||
+]
|
||||
+[
|
||||
+.BR "\-V\fP, \fB\-\-version"
|
||||
+]
|
||||
+[
|
||||
+.BR "\-c\fP, \fB\-\-copyright"
|
||||
+]
|
||||
+[
|
||||
+.BI "\-i\fP, \fB\-\-icudatadir" " directory"
|
||||
+]
|
||||
+[
|
||||
+.BR "\-v\fP, \fB\-\-verbose"
|
||||
+]
|
||||
+[
|
||||
+.BI "\-L\fP, \fB\-\-list-plugins"
|
||||
+]
|
||||
+[
|
||||
+.BI "\-m\fP, \fB\-\-milisecond-time"
|
||||
+]
|
||||
+[
|
||||
+.BI "\-K\fP, \fB\-\-cleanup"
|
||||
+]
|
||||
+.SH DESCRIPTION
|
||||
+.B icuinfo
|
||||
+prints basic information about the current version of ICU.
|
||||
+.SH OPTIONS
|
||||
+.TP
|
||||
+.BR "\-h\fP, \fB\-?\fP, \fB\-\-help"
|
||||
+Print help about usage and exit.
|
||||
+.TP
|
||||
+.BR "\-V\fP, \fB\-\-version"
|
||||
+Print the version of
|
||||
+.B icuinfo
|
||||
+and exit.
|
||||
+.TP
|
||||
+.BR "\-c\fP, \fB\-\-copyright"
|
||||
+Embeds the standard ICU copyright into the
|
||||
+.IR output-file .
|
||||
+.TP
|
||||
+.BR "\-v\fP, \fB\-\-verbose"
|
||||
+Display extra informative messages during execution.
|
||||
+.TP
|
||||
+.BI "\-i\fP, \fB\-\-icudatadir" " directory"
|
||||
+Look for any necessary ICU data files in
|
||||
+.IR directory .
|
||||
+For example, the file
|
||||
+.B pnames.icu
|
||||
+must be located when ICU's data is not built as a shared library.
|
||||
+The default ICU data directory is specified by the environment variable
|
||||
+.BR ICU_DATA .
|
||||
+Most configurations of ICU do not require this argument.
|
||||
+.TP
|
||||
+.BI "\-L\fP, \fB\-\-list-plugins"
|
||||
+If specified, list and diagnose issues with ICU plugins.
|
||||
+.TP
|
||||
+.BI "\-K\fP, \fB\-\-cleanup"
|
||||
+Attempt to unload plugins before exiting.
|
||||
+.TP
|
||||
+.BI "\-m\fP, \fB\-\-milisecond-time"
|
||||
+Print the current UTC time in milliseconds.
|
||||
+.SH COPYRIGHT
|
||||
+Copyright (C) 2010 International Business Machines Corporation and others
|
||||
diff -Nur orig.icu/source/tools/icuinfo/Makefile.in icu/source/tools/icuinfo/Makefile.in
|
||||
--- orig.icu/source/tools/icuinfo/Makefile.in 2015-10-08 05:53:56.000000000 +0200
|
||||
+++ icu/source/tools/icuinfo/Makefile.in 2015-10-27 19:23:19.115509906 +0100
|
||||
@@ -14,8 +14,15 @@
|
||||
## Build directory information
|
||||
subdir = tools/icuinfo
|
||||
|
||||
+TARGET_STUB_NAME = icuinfo
|
||||
+
|
||||
+SECTION = 1
|
||||
+
|
||||
+MAN_FILES = $(TARGET_STUB_NAME).$(SECTION)
|
||||
+
|
||||
+
|
||||
## Extra files to remove for 'make clean'
|
||||
-CLEANFILES = *~ $(DEPS) $(PLUGIN_OBJECTS) $(PLUGINFILE) $(PLUGIN)
|
||||
+CLEANFILES = *~ $(DEPS) $(PLUGIN_OBJECTS) $(PLUGINFILE) $(PLUGIN) $(MAN_FILES)
|
||||
|
||||
## Target information
|
||||
TARGET = icuinfo$(EXEEXT)
|
||||
@@ -35,7 +42,8 @@
|
||||
|
||||
## List of phony targets
|
||||
.PHONY : all all-local install install-local clean clean-local \
|
||||
-distclean distclean-local dist dist-local check check-local plugin-check
|
||||
+distclean distclean-local dist dist-local check check-local plugin-check \
|
||||
+install-man
|
||||
|
||||
## Clear suffix list
|
||||
.SUFFIXES :
|
||||
@@ -48,12 +56,16 @@
|
||||
dist: dist-local
|
||||
check: all check-local
|
||||
|
||||
-all-local: $(TARGET)
|
||||
+all-local: $(TARGET) $(MAN_FILES)
|
||||
|
||||
-install-local: all-local
|
||||
+install-local: all-local install-man
|
||||
$(MKINSTALLDIRS) $(DESTDIR)$(bindir)
|
||||
$(INSTALL) $(TARGET) $(DESTDIR)$(bindir)
|
||||
|
||||
+install-man: $(MAN_FILES)
|
||||
+ $(MKINSTALLDIRS) $(DESTDIR)$(mandir)/man$(SECTION)
|
||||
+ $(INSTALL_DATA) $? $(DESTDIR)$(mandir)/man$(SECTION)
|
||||
+
|
||||
dist-local:
|
||||
|
||||
clean-local:
|
||||
@@ -103,6 +115,10 @@
|
||||
@echo "Plugins are disabled (use --enable-plugins to enable)"
|
||||
endif
|
||||
|
||||
+%.$(SECTION): $(srcdir)/%.$(SECTION).in
|
||||
+ cd $(top_builddir) \
|
||||
+ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
|
||||
+
|
||||
ifeq (,$(MAKECMDGOALS))
|
||||
-include $(DEPS)
|
||||
else
|
|
@ -0,0 +1,244 @@
|
|||
# Offsets corected from https://ssl.icu-project.org/trac/changeset/39109
|
||||
diff -ru icu.orig/source/common/uloc.cpp icu/source/common/uloc.cpp
|
||||
--- icu.orig/source/common/uloc.cpp 2016-03-23 21:50:12.000000000 +0100
|
||||
+++ icu/source/common/uloc.cpp 2016-11-01 15:21:16.542151312 +0100
|
||||
@@ -2246,7 +2246,7 @@
|
||||
typedef struct {
|
||||
float q;
|
||||
int32_t dummy; /* to avoid uninitialized memory copy from qsort */
|
||||
- char *locale;
|
||||
+ char locale[ULOC_FULLNAME_CAPACITY+1];
|
||||
} _acceptLangItem;
|
||||
|
||||
static int32_t U_CALLCONV
|
||||
@@ -2288,9 +2288,7 @@
|
||||
UEnumeration* availableLocales,
|
||||
UErrorCode *status)
|
||||
{
|
||||
- _acceptLangItem *j;
|
||||
- _acceptLangItem smallBuffer[30];
|
||||
- char **strs;
|
||||
+ MaybeStackArray<_acceptLangItem, 4> items; // Struct for collecting items.
|
||||
char tmp[ULOC_FULLNAME_CAPACITY +1];
|
||||
int32_t n = 0;
|
||||
const char *itemEnd;
|
||||
@@ -2300,11 +2298,7 @@
|
||||
int32_t res;
|
||||
int32_t i;
|
||||
int32_t l = (int32_t)uprv_strlen(httpAcceptLanguage);
|
||||
- int32_t jSize;
|
||||
- char *tempstr; /* Use for null pointer check */
|
||||
|
||||
- j = smallBuffer;
|
||||
- jSize = UPRV_LENGTHOF(smallBuffer);
|
||||
if(U_FAILURE(*status)) {
|
||||
return -1;
|
||||
}
|
||||
@@ -2332,27 +2326,29 @@
|
||||
while(isspace(*t)) {
|
||||
t++;
|
||||
}
|
||||
- j[n].q = (float)_uloc_strtod(t,NULL);
|
||||
+ items[n].q = (float)_uloc_strtod(t,NULL);
|
||||
} else {
|
||||
/* no semicolon - it's 1.0 */
|
||||
- j[n].q = 1.0f;
|
||||
+ items[n].q = 1.0f;
|
||||
paramEnd = itemEnd;
|
||||
}
|
||||
- j[n].dummy=0;
|
||||
+ items[n].dummy=0;
|
||||
/* eat spaces prior to semi */
|
||||
for(t=(paramEnd-1);(paramEnd>s)&&isspace(*t);t--)
|
||||
;
|
||||
- /* Check for null pointer from uprv_strndup */
|
||||
- tempstr = uprv_strndup(s,(int32_t)((t+1)-s));
|
||||
- if (tempstr == NULL) {
|
||||
- *status = U_MEMORY_ALLOCATION_ERROR;
|
||||
- return -1;
|
||||
- }
|
||||
- j[n].locale = tempstr;
|
||||
- uloc_canonicalize(j[n].locale,tmp,UPRV_LENGTHOF(tmp),status);
|
||||
- if(strcmp(j[n].locale,tmp)) {
|
||||
- uprv_free(j[n].locale);
|
||||
- j[n].locale=uprv_strdup(tmp);
|
||||
+ int32_t slen = ((t+1)-s);
|
||||
+ if(slen > ULOC_FULLNAME_CAPACITY) {
|
||||
+ *status = U_BUFFER_OVERFLOW_ERROR;
|
||||
+ return -1; // too big
|
||||
+ }
|
||||
+ uprv_strncpy(items[n].locale, s, slen);
|
||||
+ items[n].locale[slen]=0; // terminate
|
||||
+ int32_t clen = uloc_canonicalize(items[n].locale, tmp, UPRV_LENGTHOF(tmp)-1, status);
|
||||
+ if(U_FAILURE(*status)) return -1;
|
||||
+ if((clen!=slen) || (uprv_strncmp(items[n].locale, tmp, slen))) {
|
||||
+ // canonicalization had an effect- copy back
|
||||
+ uprv_strncpy(items[n].locale, tmp, clen);
|
||||
+ items[n].locale[clen] = 0; // terminate
|
||||
}
|
||||
#if defined(ULOC_DEBUG)
|
||||
/*fprintf(stderr,"%d: s <%s> q <%g>\n", n, j[n].locale, j[n].q);*/
|
||||
@@ -2362,63 +2358,29 @@
|
||||
while(*s==',') { /* eat duplicate commas */
|
||||
s++;
|
||||
}
|
||||
- if(n>=jSize) {
|
||||
- if(j==smallBuffer) { /* overflowed the small buffer. */
|
||||
- j = static_cast<_acceptLangItem *>(uprv_malloc(sizeof(j[0])*(jSize*2)));
|
||||
- if(j!=NULL) {
|
||||
- uprv_memcpy(j,smallBuffer,sizeof(j[0])*jSize);
|
||||
- }
|
||||
+ if(n>=items.getCapacity()) { // If we need more items
|
||||
+ if(NULL == items.resize(items.getCapacity()*2, items.getCapacity())) {
|
||||
+ *status = U_MEMORY_ALLOCATION_ERROR;
|
||||
+ return -1;
|
||||
+ }
|
||||
#if defined(ULOC_DEBUG)
|
||||
- fprintf(stderr,"malloced at size %d\n", jSize);
|
||||
+ fprintf(stderr,"malloced at size %d\n", items.getCapacity());
|
||||
#endif
|
||||
- } else {
|
||||
- j = static_cast<_acceptLangItem *>(uprv_realloc(j, sizeof(j[0])*jSize*2));
|
||||
-#if defined(ULOC_DEBUG)
|
||||
- fprintf(stderr,"re-alloced at size %d\n", jSize);
|
||||
-#endif
|
||||
- }
|
||||
- jSize *= 2;
|
||||
- if(j==NULL) {
|
||||
- *status = U_MEMORY_ALLOCATION_ERROR;
|
||||
- return -1;
|
||||
- }
|
||||
}
|
||||
}
|
||||
- uprv_sortArray(j, n, sizeof(j[0]), uloc_acceptLanguageCompare, NULL, TRUE, status);
|
||||
+ uprv_sortArray(items.getAlias(), n, sizeof(items[0]), uloc_acceptLanguageCompare, NULL, TRUE, status);
|
||||
+ LocalArray<const char*> strs(new const char*[n], *status);
|
||||
if(U_FAILURE(*status)) {
|
||||
- if(j != smallBuffer) {
|
||||
-#if defined(ULOC_DEBUG)
|
||||
- fprintf(stderr,"freeing j %p\n", j);
|
||||
-#endif
|
||||
- uprv_free(j);
|
||||
- }
|
||||
- return -1;
|
||||
- }
|
||||
- strs = static_cast<char **>(uprv_malloc((size_t)(sizeof(strs[0])*n)));
|
||||
- /* Check for null pointer */
|
||||
- if (strs == NULL) {
|
||||
- uprv_free(j); /* Free to avoid memory leak */
|
||||
- *status = U_MEMORY_ALLOCATION_ERROR;
|
||||
- return -1;
|
||||
+ return -1;
|
||||
}
|
||||
for(i=0;i<n;i++) {
|
||||
#if defined(ULOC_DEBUG)
|
||||
/*fprintf(stderr,"%d: s <%s> q <%g>\n", i, j[i].locale, j[i].q);*/
|
||||
#endif
|
||||
- strs[i]=j[i].locale;
|
||||
+ strs[i]=items[i].locale;
|
||||
}
|
||||
res = uloc_acceptLanguage(result, resultAvailable, outResult,
|
||||
- (const char**)strs, n, availableLocales, status);
|
||||
- for(i=0;i<n;i++) {
|
||||
- uprv_free(strs[i]);
|
||||
- }
|
||||
- uprv_free(strs);
|
||||
- if(j != smallBuffer) {
|
||||
-#if defined(ULOC_DEBUG)
|
||||
- fprintf(stderr,"freeing j %p\n", j);
|
||||
-#endif
|
||||
- uprv_free(j);
|
||||
- }
|
||||
+ strs.getAlias(), n, availableLocales, status);
|
||||
return res;
|
||||
}
|
||||
|
||||
diff -ru icu.orig/source/test/cintltst/cloctst.c icu/source/test/cintltst/cloctst.c
|
||||
--- icu.orig/source/test/cintltst/cloctst.c 2016-03-23 21:48:18.000000000 +0100
|
||||
+++ icu/source/test/cintltst/cloctst.c 2016-11-01 15:21:16.544151315 +0100
|
||||
@@ -2775,16 +2775,20 @@
|
||||
const char *icuSet; /**< ? */
|
||||
const char *expect; /**< The expected locale result */
|
||||
UAcceptResult res; /**< The expected error code */
|
||||
+ UErrorCode expectStatus; /**< expected status */
|
||||
} tests[] = {
|
||||
- /*0*/{ 0, NULL, "mt_MT", ULOC_ACCEPT_VALID },
|
||||
- /*1*/{ 1, NULL, "en", ULOC_ACCEPT_VALID },
|
||||
- /*2*/{ 2, NULL, "en", ULOC_ACCEPT_FALLBACK },
|
||||
- /*3*/{ 3, NULL, "", ULOC_ACCEPT_FAILED },
|
||||
- /*4*/{ 4, NULL, "es", ULOC_ACCEPT_VALID },
|
||||
-
|
||||
- /*5*/{ 5, NULL, "en", ULOC_ACCEPT_VALID }, /* XF */
|
||||
- /*6*/{ 6, NULL, "ja", ULOC_ACCEPT_FALLBACK }, /* XF */
|
||||
- /*7*/{ 7, NULL, "zh", ULOC_ACCEPT_FALLBACK }, /* XF */
|
||||
+ /*0*/{ 0, NULL, "mt_MT", ULOC_ACCEPT_VALID, U_ZERO_ERROR},
|
||||
+ /*1*/{ 1, NULL, "en", ULOC_ACCEPT_VALID, U_ZERO_ERROR},
|
||||
+ /*2*/{ 2, NULL, "en", ULOC_ACCEPT_FALLBACK, U_ZERO_ERROR},
|
||||
+ /*3*/{ 3, NULL, "", ULOC_ACCEPT_FAILED, U_ZERO_ERROR},
|
||||
+ /*4*/{ 4, NULL, "es", ULOC_ACCEPT_VALID, U_ZERO_ERROR},
|
||||
+ /*5*/{ 5, NULL, "en", ULOC_ACCEPT_VALID, U_ZERO_ERROR}, /* XF */
|
||||
+ /*6*/{ 6, NULL, "ja", ULOC_ACCEPT_FALLBACK, U_ZERO_ERROR}, /* XF */
|
||||
+ /*7*/{ 7, NULL, "zh", ULOC_ACCEPT_FALLBACK, U_ZERO_ERROR}, /* XF */
|
||||
+ /*8*/{ 8, NULL, "", ULOC_ACCEPT_FAILED, U_ZERO_ERROR }, /* */
|
||||
+ /*9*/{ 9, NULL, "", ULOC_ACCEPT_FAILED, U_ZERO_ERROR }, /* */
|
||||
+ /*10*/{10, NULL, "", ULOC_ACCEPT_FAILED, U_BUFFER_OVERFLOW_ERROR }, /* */
|
||||
+ /*11*/{11, NULL, "", ULOC_ACCEPT_FAILED, U_BUFFER_OVERFLOW_ERROR }, /* */
|
||||
};
|
||||
const int32_t numTests = UPRV_LENGTHOF(tests);
|
||||
static const char *http[] = {
|
||||
@@ -2800,10 +2804,25 @@
|
||||
"xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, "
|
||||
"xxx-yyy;q=.01, xxx-yyy;q=.01, xxx-yyy;q=.01, xx-yy;q=.1, "
|
||||
"es",
|
||||
-
|
||||
/*5*/ "zh-xx;q=0.9, en;q=0.6",
|
||||
/*6*/ "ja-JA",
|
||||
/*7*/ "zh-xx;q=0.9",
|
||||
+ /*08*/ "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
|
||||
+ "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
|
||||
+ "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
|
||||
+ "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", // 156
|
||||
+ /*09*/ "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
|
||||
+ "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
|
||||
+ "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
|
||||
+ "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB", // 157 (this hits U_STRING_NOT_TERMINATED_WARNING )
|
||||
+ /*10*/ "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
|
||||
+ "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
|
||||
+ "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
|
||||
+ "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABC", // 158
|
||||
+ /*11*/ "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
|
||||
+ "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
|
||||
+ "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
|
||||
+ "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", // 163 bytes
|
||||
};
|
||||
|
||||
for(i=0;i<numTests;i++) {
|
||||
@@ -2818,17 +2837,22 @@
|
||||
(void)rc; /* Suppress set but not used warning. */
|
||||
uenum_close(available);
|
||||
log_verbose(" got %s, %s [%s]\n", tmp[0]?tmp:"(EMPTY)", acceptResult(outResult), u_errorName(status));
|
||||
- if(outResult != tests[i].res) {
|
||||
+ if(status != tests[i].expectStatus) {
|
||||
+ log_err_status(status, "FAIL: expected status %s but got %s\n", u_errorName(tests[i].expectStatus), u_errorName(status));
|
||||
+ } else if(U_SUCCESS(tests[i].expectStatus)) {
|
||||
+ /* don't check content if expected failure */
|
||||
+ if(outResult != tests[i].res) {
|
||||
log_err_status(status, "FAIL: #%d: expected outResult of %s but got %s\n", i,
|
||||
acceptResult( tests[i].res),
|
||||
acceptResult( outResult));
|
||||
log_info("test #%d: http[%s], ICU[%s], expect %s, %s\n",
|
||||
i, http[tests[i].httpSet], tests[i].icuSet, tests[i].expect,acceptResult(tests[i].res));
|
||||
- }
|
||||
- if((outResult>0)&&uprv_strcmp(tmp, tests[i].expect)) {
|
||||
- log_err_status(status, "FAIL: #%d: expected %s but got %s\n", i, tests[i].expect, tmp);
|
||||
- log_info("test #%d: http[%s], ICU[%s], expect %s, %s\n",
|
||||
- i, http[tests[i].httpSet], tests[i].icuSet, tests[i].expect, acceptResult(tests[i].res));
|
||||
+ }
|
||||
+ if((outResult>0)&&uprv_strcmp(tmp, tests[i].expect)) {
|
||||
+ log_err_status(status, "FAIL: #%d: expected %s but got %s\n", i, tests[i].expect, tmp);
|
||||
+ log_info("test #%d: http[%s], ICU[%s], expect %s, %s\n",
|
||||
+ i, http[tests[i].httpSet], tests[i].icuSet, tests[i].expect, acceptResult(tests[i].res));
|
||||
+ }
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,156 @@
|
|||
# https://ssl.icu-project.org/trac/changeset/39671
|
||||
Index: /trunk/icu4c/source/common/utext.cpp
|
||||
===================================================================
|
||||
--- icu.orig/source/common/utext.cpp
|
||||
+++ icu/source/common/utext.cpp
|
||||
@@ -848,7 +848,13 @@
|
||||
|
||||
// Chunk size.
|
||||
-// Must be less than 85, because of byte mapping from UChar indexes to native indexes.
|
||||
-// Worst case is three native bytes to one UChar. (Supplemenaries are 4 native bytes
|
||||
-// to two UChars.)
|
||||
+// Must be less than 42 (256/6), because of byte mapping from UChar indexes to native indexes.
|
||||
+// Worst case there are six UTF-8 bytes per UChar.
|
||||
+// obsolete 6 byte form fd + 5 trails maps to fffd
|
||||
+// obsolete 5 byte form fc + 4 trails maps to fffd
|
||||
+// non-shortest 4 byte forms maps to fffd
|
||||
+// normal supplementaries map to a pair of utf-16, two utf8 bytes per utf-16 unit
|
||||
+// mapToUChars array size must allow for the worst case, 6.
|
||||
+// This could be brought down to 4, by treating fd and fc as pure illegal,
|
||||
+// rather than obsolete lead bytes. But that is not compatible with the utf-8 access macros.
|
||||
//
|
||||
enum { UTF8_TEXT_CHUNK_SIZE=32 };
|
||||
@@ -890,5 +896,5 @@
|
||||
// one for a supplementary starting in the last normal position,
|
||||
// and one for an entry for the buffer limit position.
|
||||
- uint8_t mapToUChars[UTF8_TEXT_CHUNK_SIZE*3+6]; // Map native offset from bufNativeStart to
|
||||
+ uint8_t mapToUChars[UTF8_TEXT_CHUNK_SIZE*6+6]; // Map native offset from bufNativeStart to
|
||||
// correspoding offset in filled part of buf.
|
||||
int32_t align;
|
||||
@@ -1033,4 +1039,5 @@
|
||||
u8b = (UTF8Buf *)ut->p; // the current buffer
|
||||
mapIndex = ix - u8b->toUCharsMapStart;
|
||||
+ U_ASSERT(mapIndex < (int32_t)sizeof(UTF8Buf::mapToUChars));
|
||||
ut->chunkOffset = u8b->mapToUChars[mapIndex] - u8b->bufStartIdx;
|
||||
return TRUE;
|
||||
@@ -1299,4 +1306,8 @@
|
||||
// If index is at the end, there is no character there to look at.
|
||||
if (ix != ut->b) {
|
||||
+ // Note: this function will only move the index back if it is on a trail byte
|
||||
+ // and there is a preceding lead byte and the sequence from the lead
|
||||
+ // through this trail could be part of a valid UTF-8 sequence
|
||||
+ // Otherwise the index remains unchanged.
|
||||
U8_SET_CP_START(s8, 0, ix);
|
||||
}
|
||||
@@ -1312,5 +1323,8 @@
|
||||
uint8_t *mapToNative = u8b->mapToNative;
|
||||
uint8_t *mapToUChars = u8b->mapToUChars;
|
||||
- int32_t toUCharsMapStart = ix - (UTF8_TEXT_CHUNK_SIZE*3 + 1);
|
||||
+ int32_t toUCharsMapStart = ix - sizeof(UTF8Buf::mapToUChars) + 1;
|
||||
+ // Note that toUCharsMapStart can be negative. Happens when the remaining
|
||||
+ // text from current position to the beginning is less than the buffer size.
|
||||
+ // + 1 because mapToUChars must have a slot at the end for the bufNativeLimit entry.
|
||||
int32_t destIx = UTF8_TEXT_CHUNK_SIZE+2; // Start in the overflow region
|
||||
// at end of buffer to leave room
|
||||
@@ -1339,4 +1353,5 @@
|
||||
// Special case ASCII range for speed.
|
||||
buf[destIx] = (UChar)c;
|
||||
+ U_ASSERT(toUCharsMapStart <= srcIx);
|
||||
mapToUChars[srcIx - toUCharsMapStart] = (uint8_t)destIx;
|
||||
mapToNative[destIx] = (uint8_t)(srcIx - toUCharsMapStart);
|
||||
@@ -1368,4 +1383,5 @@
|
||||
mapToUChars[sIx-- - toUCharsMapStart] = (uint8_t)destIx;
|
||||
} while (sIx >= srcIx);
|
||||
+ U_ASSERT(toUCharsMapStart <= (srcIx+1));
|
||||
|
||||
// Set native indexing limit to be the current position.
|
||||
@@ -1542,4 +1558,5 @@
|
||||
U_ASSERT(index<=ut->chunkNativeLimit);
|
||||
int32_t mapIndex = index - u8b->toUCharsMapStart;
|
||||
+ U_ASSERT(mapIndex < (int32_t)sizeof(UTF8Buf::mapToUChars));
|
||||
int32_t offset = u8b->mapToUChars[mapIndex] - u8b->bufStartIdx;
|
||||
U_ASSERT(offset>=0 && offset<=ut->chunkLength);
|
||||
Index: /trunk/icu4c/source/test/intltest/utxttest.cpp
|
||||
===================================================================
|
||||
--- icu.orig/source/test/intltest/utxttest.cpp
|
||||
+++ icu/source/test/intltest/utxttest.cpp
|
||||
@@ -68,4 +68,6 @@
|
||||
case 7: name = "Ticket12130";
|
||||
if (exec) Ticket12130(); break;
|
||||
+ case 8: name = "Ticket12888";
|
||||
+ if (exec) Ticket12888(); break;
|
||||
default: name = ""; break;
|
||||
}
|
||||
@@ -1584,2 +1586,62 @@
|
||||
utext_close(&ut);
|
||||
}
|
||||
+
|
||||
+// Ticket 12888: bad handling of illegal utf-8 containing many instances of the archaic, now illegal,
|
||||
+// six byte utf-8 forms. Original implementation had an assumption that
|
||||
+// there would be at most three utf-8 bytes per UTF-16 code unit.
|
||||
+// The five and six byte sequences map to a single replacement character.
|
||||
+
|
||||
+void UTextTest::Ticket12888() {
|
||||
+ const char *badString =
|
||||
+ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
|
||||
+ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
|
||||
+ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
|
||||
+ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
|
||||
+ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
|
||||
+ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
|
||||
+ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
|
||||
+ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
|
||||
+ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
|
||||
+ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
|
||||
+ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
|
||||
+ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
|
||||
+ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
|
||||
+ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
|
||||
+ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
|
||||
+ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
|
||||
+ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
|
||||
+ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
|
||||
+ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80"
|
||||
+ "\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80\xfd\x80\x80\x80\x80\x80";
|
||||
+
|
||||
+ UErrorCode status = U_ZERO_ERROR;
|
||||
+ LocalUTextPointer ut(utext_openUTF8(NULL, badString, -1, &status));
|
||||
+ TEST_SUCCESS(status);
|
||||
+ for (;;) {
|
||||
+ UChar32 c = utext_next32(ut.getAlias());
|
||||
+ if (c == U_SENTINEL) {
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+ int32_t endIdx = utext_getNativeIndex(ut.getAlias());
|
||||
+ if (endIdx != (int32_t)strlen(badString)) {
|
||||
+ errln("%s:%d expected=%d, actual=%d", __FILE__, __LINE__, strlen(badString), endIdx);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ for (int32_t prevIndex = endIdx; prevIndex>0;) {
|
||||
+ UChar32 c = utext_previous32(ut.getAlias());
|
||||
+ int32_t currentIndex = utext_getNativeIndex(ut.getAlias());
|
||||
+ if (c != 0xfffd) {
|
||||
+ errln("%s:%d (expected, actual, index) = (%d, %d, %d)\n",
|
||||
+ __FILE__, __LINE__, 0xfffd, c, currentIndex);
|
||||
+ break;
|
||||
+ }
|
||||
+ if (currentIndex != prevIndex - 6) {
|
||||
+ errln("%s:%d: wrong index. Expected, actual = %d, %d",
|
||||
+ __FILE__, __LINE__, prevIndex - 6, currentIndex);
|
||||
+ break;
|
||||
+ }
|
||||
+ prevIndex = currentIndex;
|
||||
+ }
|
||||
+}
|
||||
Index: /trunk/icu4c/source/test/intltest/utxttest.h
|
||||
===================================================================
|
||||
--- icu.orig/source/test/intltest/utxttest.h
|
||||
+++ icu/source/test/intltest/utxttest.h
|
||||
@@ -39,4 +39,5 @@
|
||||
void Ticket10983();
|
||||
void Ticket12130();
|
||||
+ void Ticket12888();
|
||||
|
||||
private:
|
|
@ -0,0 +1,15 @@
|
|||
diff -up webkitgtk-2.20.4/Source/WebCore/accessibility/AccessibilityRenderObject.cpp.atk_continuation_crash webkitgtk-2.20.4/Source/WebCore/accessibility/AccessibilityRenderObject.cpp
|
||||
--- webkitgtk-2.20.4/Source/WebCore/accessibility/AccessibilityRenderObject.cpp.atk_continuation_crash 2018-02-20 09:25:28.000000000 +0100
|
||||
+++ webkitgtk-2.20.4/Source/WebCore/accessibility/AccessibilityRenderObject.cpp 2018-08-07 11:43:19.438679595 +0200
|
||||
@@ -381,8 +381,9 @@ AccessibilityObject* AccessibilityRender
|
||||
|
||||
// Case 5: node has no next sibling, and its parent is an inline with a continuation.
|
||||
// Case 5.1: After case 4, (the element was inline w/ continuation but had no sibling), then check it's parent.
|
||||
- if (!nextSibling && isInlineWithContinuation(*m_renderer->parent())) {
|
||||
- auto& continuation = *downcast<RenderInline>(*m_renderer->parent()).continuation();
|
||||
+ auto parent = m_renderer->parent();
|
||||
+ if (!nextSibling && parent && isInlineWithContinuation(*parent)) {
|
||||
+ auto& continuation = *downcast<RenderInline>(*parent).continuation();
|
||||
|
||||
// Case 5a: continuation is a block - in this case the block itself is the next sibling.
|
||||
if (is<RenderBlock>(continuation))
|
|
@ -0,0 +1,24 @@
|
|||
diff -up webkitgtk-2.20.3/Source/WebCore/accessibility/AccessibilityObject.cpp.atk_crash webkitgtk-2.20.3/Source/WebCore/accessibility/AccessibilityObject.cpp
|
||||
--- webkitgtk-2.20.3/Source/WebCore/accessibility/AccessibilityObject.cpp.atk_crash 2018-04-09 14:00:57.000000000 +0200
|
||||
+++ webkitgtk-2.20.3/Source/WebCore/accessibility/AccessibilityObject.cpp 2018-07-24 13:40:41.183634369 +0200
|
||||
@@ -67,6 +67,7 @@
|
||||
#include "RenderView.h"
|
||||
#include "RenderWidget.h"
|
||||
#include "RenderedPosition.h"
|
||||
+#include "ScriptDisallowedScope.h"
|
||||
#include "Settings.h"
|
||||
#include "TextCheckerClient.h"
|
||||
#include "TextCheckingHelper.h"
|
||||
@@ -1771,7 +1772,11 @@ void AccessibilityObject::updateBackingS
|
||||
// Updating the layout may delete this object.
|
||||
RefPtr<AccessibilityObject> protectedThis(this);
|
||||
if (auto* document = this->document()) {
|
||||
- if (!document->view()->layoutContext().isInRenderTreeLayout() && !document->inRenderTreeUpdate() && !document->inStyleRecalc())
|
||||
+ if (!document->view()->layoutContext().isInRenderTreeLayout()
|
||||
+ && !document->inRenderTreeUpdate()
|
||||
+ && !document->inStyleRecalc()
|
||||
+ && ScriptDisallowedScope::InMainThread::isScriptAllowed())
|
||||
+
|
||||
document->updateLayoutIgnorePendingStylesheets();
|
||||
}
|
||||
updateChildrenIfNecessary();
|
|
@ -0,0 +1,30 @@
|
|||
diff -up webkitgtk-2.14.7/Source/JavaScriptCore/bytecode/CodeBlock.cpp.b132333 webkitgtk-2.14.7/Source/JavaScriptCore/bytecode/CodeBlock.cpp
|
||||
--- webkitgtk-2.14.7/Source/JavaScriptCore/bytecode/CodeBlock.cpp.b132333 2017-02-07 09:05:07.000000000 +0100
|
||||
+++ webkitgtk-2.14.7/Source/JavaScriptCore/bytecode/CodeBlock.cpp 2017-06-16 10:34:57.859748036 +0200
|
||||
@@ -2186,7 +2186,12 @@ void CodeBlock::finishCreation(VM& vm, S
|
||||
instructions[i + 5].u.watchpointSet = op.watchpointSet;
|
||||
else if (op.structure)
|
||||
instructions[i + 5].u.structure.set(vm, this, op.structure);
|
||||
- instructions[i + 6].u.pointer = reinterpret_cast<void*>(op.operand);
|
||||
+
|
||||
+ if (op.type == ClosureVar || op.type == ClosureVarWithVarInjectionChecks || op.type == GlobalProperty || op.type == GlobalPropertyWithVarInjectionChecks || op.type == ModuleVar)
|
||||
+ instructions[i + 6].u.operand = op.operand;
|
||||
+ else
|
||||
+ instructions[i + 6].u.pointer = reinterpret_cast<void*>(op.operand);
|
||||
+
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -2222,7 +2227,11 @@ void CodeBlock::finishCreation(VM& vm, S
|
||||
op.watchpointSet->invalidate(vm, PutToScopeFireDetail(this, ident));
|
||||
} else if (op.structure)
|
||||
instructions[i + 5].u.structure.set(vm, this, op.structure);
|
||||
- instructions[i + 6].u.pointer = reinterpret_cast<void*>(op.operand);
|
||||
+
|
||||
+ if (op.type == ClosureVar || op.type == ClosureVarWithVarInjectionChecks || op.type == GlobalProperty || op.type == GlobalPropertyWithVarInjectionChecks || op.type == ModuleVar)
|
||||
+ instructions[i + 6].u.operand = op.operand;
|
||||
+ else
|
||||
+ instructions[i + 6].u.pointer = reinterpret_cast<void*>(op.operand);
|
||||
|
||||
break;
|
||||
}
|
|
@ -0,0 +1,13 @@
|
|||
diff --git a/Source/WebCore/rendering/RenderThemeGtk.cpp b/Source/WebCore/rendering/RenderThemeGtk.cpp
|
||||
index d04a6845f26..8e8fe10f58e 100644
|
||||
--- a/Source/WebCore/rendering/RenderThemeGtk.cpp
|
||||
+++ b/Source/WebCore/rendering/RenderThemeGtk.cpp
|
||||
@@ -1314,7 +1314,7 @@ void RenderThemeGtk::adjustSliderThumbSize(RenderStyle& style, const Element*) c
|
||||
if (part != SliderThumbHorizontalPart && part != SliderThumbVerticalPart)
|
||||
return;
|
||||
|
||||
- auto& sliderWidget = static_cast<RenderThemeSlider&>(RenderThemeWidget::getOrCreate(part == SliderHorizontalPart ? RenderThemeWidget::Type::HorizontalSlider : RenderThemeWidget::Type::VerticalSlider));
|
||||
+ auto& sliderWidget = static_cast<RenderThemeSlider&>(RenderThemeWidget::getOrCreate(part == SliderThumbHorizontalPart ? RenderThemeWidget::Type::HorizontalSlider : RenderThemeWidget::Type::VerticalSlider));
|
||||
sliderWidget.scale().setState(GTK_STATE_FLAG_NORMAL);
|
||||
sliderWidget.trough().setState(GTK_STATE_FLAG_NORMAL);
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
diff --git a/Source/WebCore/page/linux/ResourceUsageThreadLinux.cpp b/Source/WebCore/page/linux/ResourceUsageThreadLinux.cpp
|
||||
index d9e4179072d..b1f51e14f6f 100644
|
||||
--- a/Source/WebCore/page/linux/ResourceUsageThreadLinux.cpp
|
||||
+++ b/Source/WebCore/page/linux/ResourceUsageThreadLinux.cpp
|
||||
@@ -58,8 +58,14 @@ static float cpuPeriod()
|
||||
unsigned long long userTime, niceTime, systemTime, idleTime;
|
||||
unsigned long long ioWait, irq, softIrq, steal, guest, guestnice;
|
||||
ioWait = irq = softIrq = steal = guest = guestnice = 0;
|
||||
- sscanf(buffer, "cpu %16llu %16llu %16llu %16llu %16llu %16llu %16llu %16llu %16llu %16llu",
|
||||
+ int retVal = sscanf(buffer, "cpu %16llu %16llu %16llu %16llu %16llu %16llu %16llu %16llu %16llu %16llu",
|
||||
&userTime, &niceTime, &systemTime, &idleTime, &ioWait, &irq, &softIrq, &steal, &guest, &guestnice);
|
||||
+ // We expect 10 values to be matched by sscanf
|
||||
+ if (retVal < 10 || retVal == EOF) {
|
||||
+ fclose(file);
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
|
||||
// Keep parsing if we still don't know cpuCount.
|
||||
static unsigned cpuCount = 0;
|
|
@ -0,0 +1,13 @@
|
|||
diff --git a/Source/WebCore/page/linux/ResourceUsageThreadLinux.cpp b/Source/WebCore/page/linux/ResourceUsageThreadLinux.cpp
|
||||
index b1f51e14f6f..70f0d69c11b 100644
|
||||
--- a/Source/WebCore/page/linux/ResourceUsageThreadLinux.cpp
|
||||
+++ b/Source/WebCore/page/linux/ResourceUsageThreadLinux.cpp
|
||||
@@ -61,7 +61,7 @@ static float cpuPeriod()
|
||||
int retVal = sscanf(buffer, "cpu %16llu %16llu %16llu %16llu %16llu %16llu %16llu %16llu %16llu %16llu",
|
||||
&userTime, &niceTime, &systemTime, &idleTime, &ioWait, &irq, &softIrq, &steal, &guest, &guestnice);
|
||||
// We expect 10 values to be matched by sscanf
|
||||
- if (retVal < 10 || retVal == EOF) {
|
||||
+ if (retVal != 10) {
|
||||
fclose(file);
|
||||
return 0;
|
||||
}
|
|
@ -0,0 +1,24 @@
|
|||
diff -up webkitgtk-2.20.3/Source/JavaScriptCore/runtime/JSString.h.covscan_fixes webkitgtk-2.20.3/Source/JavaScriptCore/runtime/JSString.h
|
||||
--- webkitgtk-2.20.3/Source/JavaScriptCore/runtime/JSString.h.covscan_fixes 2018-06-13 15:02:38.085399191 +0200
|
||||
+++ webkitgtk-2.20.3/Source/JavaScriptCore/runtime/JSString.h 2018-06-13 15:02:45.140375189 +0200
|
||||
@@ -221,7 +221,7 @@ private:
|
||||
mutable unsigned m_flags;
|
||||
|
||||
// A string is represented either by a String or a rope of fibers.
|
||||
- unsigned m_length;
|
||||
+ unsigned m_length{0};
|
||||
mutable String m_value;
|
||||
|
||||
friend class LLIntOffsetsExtractor;
|
||||
diff -up webkitgtk-2.20.3/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp.covscan_fixes webkitgtk-2.20.3/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp
|
||||
--- webkitgtk-2.20.3/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp.covscan_fixes 2018-06-11 10:16:31.000000000 +0200
|
||||
+++ webkitgtk-2.20.3/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp 2018-06-13 16:14:56.188378149 +0200
|
||||
@@ -230,7 +230,7 @@ private:
|
||||
GstVideoFrame m_videoFrame;
|
||||
IntSize m_size;
|
||||
TextureMapperGL::Flags m_flags;
|
||||
- GLuint m_textureID;
|
||||
+ GLuint m_textureID { 0 };
|
||||
bool m_isValid { false };
|
||||
};
|
||||
#endif // USE(GSTREAMER_GL)
|
|
@ -0,0 +1,41 @@
|
|||
--- a/Source/bmalloc/bmalloc/DebugHeap.h
|
||||
+++ a/Source/bmalloc/bmalloc/DebugHeap.h
|
||||
@@ -53,7 +53,7 @@ private:
|
||||
#endif
|
||||
|
||||
// This is the debug heap. We can use whatever data structures we like. It doesn't matter.
|
||||
- size_t m_pageSize;
|
||||
+ size_t m_pageSize { 0 };
|
||||
std::mutex m_lock;
|
||||
std::unordered_map<void*, size_t> m_sizeMap;
|
||||
};
|
||||
--- a/Source/bmalloc/bmalloc/IsoTLS.cpp
|
||||
+++ a/Source/bmalloc/bmalloc/IsoTLS.cpp
|
||||
@@ -68,7 +68,9 @@ IsoTLS* IsoTLS::ensureEntries(unsigned offset)
|
||||
#if HAVE_PTHREAD_MACHDEP_H
|
||||
pthread_key_init_np(tlsKey, destructor);
|
||||
#else
|
||||
- pthread_key_create(&s_tlsKey, destructor);
|
||||
+ int error = pthread_key_create(&s_tlsKey, destructor);
|
||||
+ if (error)
|
||||
+ BCRASH();
|
||||
s_didInitialize = true;
|
||||
#endif
|
||||
});
|
||||
--- a/Source/bmalloc/bmalloc/VMAllocate.h
|
||||
+++ a/Source/bmalloc/bmalloc/VMAllocate.h
|
||||
@@ -56,8 +56,12 @@ namespace bmalloc {
|
||||
inline size_t vmPageSize()
|
||||
{
|
||||
static size_t cached;
|
||||
- if (!cached)
|
||||
- cached = sysconf(_SC_PAGESIZE);
|
||||
+ if (!cached) {
|
||||
+ long pageSize = sysconf(_SC_PAGESIZE);
|
||||
+ if (pageSize < 0)
|
||||
+ BCRASH();
|
||||
+ cached = pageSize;
|
||||
+ }
|
||||
return cached;
|
||||
}
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
diff -up webkitgtk-2.20.3/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp.covscan_gstreamer webkitgtk-2.20.3/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp
|
||||
--- webkitgtk-2.20.3/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp.covscan_gstreamer 2018-06-27 10:21:44.715668445 +0200
|
||||
+++ webkitgtk-2.20.3/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamerBase.cpp 2018-06-27 10:22:48.513607713 +0200
|
||||
@@ -227,9 +227,9 @@ public:
|
||||
bool isValid() const { return m_isValid; }
|
||||
|
||||
private:
|
||||
- GstVideoFrame m_videoFrame;
|
||||
+ GstVideoFrame m_videoFrame { };
|
||||
IntSize m_size;
|
||||
- TextureMapperGL::Flags m_flags;
|
||||
+ TextureMapperGL::Flags m_flags { };
|
||||
GLuint m_textureID { 0 };
|
||||
bool m_isValid { false };
|
||||
};
|
||||
diff -up webkitgtk-2.20.3/Source/WebCore/platform/graphics/gstreamer/mse/SourceBufferPrivateGStreamer.h.covscan_gstreamer webkitgtk-2.20.3/Source/WebCore/platform/graphics/gstreamer/mse/SourceBufferPrivateGStreamer.h
|
||||
--- webkitgtk-2.20.3/Source/WebCore/platform/graphics/gstreamer/mse/SourceBufferPrivateGStreamer.h.covscan_gstreamer 2018-02-19 08:45:32.000000000 +0100
|
||||
+++ webkitgtk-2.20.3/Source/WebCore/platform/graphics/gstreamer/mse/SourceBufferPrivateGStreamer.h 2018-06-27 10:21:44.715668445 +0200
|
||||
@@ -85,7 +85,7 @@ private:
|
||||
MediaSourceGStreamer* m_mediaSource;
|
||||
ContentType m_type;
|
||||
Ref<MediaSourceClientGStreamerMSE> m_client;
|
||||
- SourceBufferPrivateClient* m_sourceBufferPrivateClient;
|
||||
+ SourceBufferPrivateClient* m_sourceBufferPrivateClient { nullptr };
|
||||
bool m_isReadyForMoreSamples = true;
|
||||
bool m_notifyWhenReadyForMoreSamples = false;
|
||||
AtomicString m_trackId;
|
||||
diff -up webkitgtk-2.20.3/Source/WebCore/platform/graphics/gstreamer/VideoSinkGStreamer.cpp.covscan_gstreamer webkitgtk-2.20.3/Source/WebCore/platform/graphics/gstreamer/VideoSinkGStreamer.cpp
|
||||
--- webkitgtk-2.20.3/Source/WebCore/platform/graphics/gstreamer/VideoSinkGStreamer.cpp.covscan_gstreamer 2018-02-19 08:45:32.000000000 +0100
|
||||
+++ webkitgtk-2.20.3/Source/WebCore/platform/graphics/gstreamer/VideoSinkGStreamer.cpp 2018-06-27 10:21:44.715668445 +0200
|
||||
@@ -135,7 +135,7 @@ struct _WebKitVideoSinkPrivate {
|
||||
|
||||
VideoRenderRequestScheduler scheduler;
|
||||
GstVideoInfo info;
|
||||
- GstCaps* currentCaps;
|
||||
+ GstCaps* currentCaps { nullptr };
|
||||
};
|
||||
|
||||
#define webkit_video_sink_parent_class parent_class
|
|
@ -0,0 +1,21 @@
|
|||
diff -up webkitgtk-2.20.3/Source/JavaScriptCore/runtime/CodeCache.cpp.covscan_uninit webkitgtk-2.20.3/Source/JavaScriptCore/runtime/CodeCache.cpp
|
||||
--- webkitgtk-2.20.3/Source/JavaScriptCore/runtime/CodeCache.cpp.covscan_uninit 2018-06-18 10:03:23.060605715 +0200
|
||||
+++ webkitgtk-2.20.3/Source/JavaScriptCore/runtime/CodeCache.cpp 2018-06-18 10:03:44.223529644 +0200
|
||||
@@ -129,7 +129,7 @@ UnlinkedFunctionExecutable* CodeCache::g
|
||||
// This function assumes an input string that would result in a single function declaration.
|
||||
StatementNode* statement = program->singleStatement();
|
||||
if (UNLIKELY(!statement)) {
|
||||
- JSToken token;
|
||||
+ JSToken token = { };
|
||||
error = ParserError(ParserError::SyntaxError, ParserError::SyntaxErrorIrrecoverable, token, "Parser error", -1);
|
||||
return nullptr;
|
||||
}
|
||||
@@ -137,7 +137,7 @@ UnlinkedFunctionExecutable* CodeCache::g
|
||||
|
||||
StatementNode* funcDecl = static_cast<BlockNode*>(statement)->singleStatement();
|
||||
if (UNLIKELY(!funcDecl)) {
|
||||
- JSToken token;
|
||||
+ JSToken token = { };
|
||||
error = ParserError(ParserError::SyntaxError, ParserError::SyntaxErrorIrrecoverable, token, "Parser error", -1);
|
||||
return nullptr;
|
||||
}
|
|
@ -0,0 +1,505 @@
|
|||
diff -up webkitgtk-2.20.3/Source/JavaScriptCore/b3/air/AirAllocateRegistersByGraphColoring.cpp.covscan_fixes_uninit_ctor webkitgtk-2.20.3/Source/JavaScriptCore/b3/air/AirAllocateRegistersByGraphColoring.cpp
|
||||
--- webkitgtk-2.20.3/Source/JavaScriptCore/b3/air/AirAllocateRegistersByGraphColoring.cpp.covscan_fixes_uninit_ctor 2018-02-19 08:45:14.000000000 +0100
|
||||
+++ webkitgtk-2.20.3/Source/JavaScriptCore/b3/air/AirAllocateRegistersByGraphColoring.cpp 2018-06-18 09:07:12.032744813 +0200
|
||||
@@ -876,7 +876,7 @@ protected:
|
||||
}
|
||||
|
||||
private:
|
||||
- unsigned m_positionInMoveList;
|
||||
+ unsigned m_positionInMoveList { 0 };
|
||||
Vector<unsigned, 0, UnsafeVectorOverflow> m_moveList;
|
||||
Vector<unsigned, 0, UnsafeVectorOverflow> m_lowPriorityMoveList;
|
||||
};
|
||||
diff -up webkitgtk-2.20.3/Source/JavaScriptCore/bytecode/PolymorphicAccess.h.covscan_fixes_uninit_ctor webkitgtk-2.20.3/Source/JavaScriptCore/bytecode/PolymorphicAccess.h
|
||||
--- webkitgtk-2.20.3/Source/JavaScriptCore/bytecode/PolymorphicAccess.h.covscan_fixes_uninit_ctor 2018-02-19 08:45:14.000000000 +0100
|
||||
+++ webkitgtk-2.20.3/Source/JavaScriptCore/bytecode/PolymorphicAccess.h 2018-06-18 09:07:12.034744805 +0200
|
||||
@@ -122,7 +122,7 @@ public:
|
||||
}
|
||||
|
||||
private:
|
||||
- Kind m_kind;
|
||||
+ Kind m_kind { MadeNoChanges };
|
||||
MacroAssemblerCodePtr m_code;
|
||||
Vector<std::pair<InlineWatchpointSet&, StringFireDetail>> m_watchpointsToFire;
|
||||
};
|
||||
diff -up webkitgtk-2.20.3/Source/JavaScriptCore/dfg/DFGOSRExit.h.covscan_fixes_uninit_ctor webkitgtk-2.20.3/Source/JavaScriptCore/dfg/DFGOSRExit.h
|
||||
--- webkitgtk-2.20.3/Source/JavaScriptCore/dfg/DFGOSRExit.h.covscan_fixes_uninit_ctor 2018-02-19 08:45:14.000000000 +0100
|
||||
+++ webkitgtk-2.20.3/Source/JavaScriptCore/dfg/DFGOSRExit.h 2018-06-18 09:07:12.034744805 +0200
|
||||
@@ -131,7 +131,7 @@ struct OSRExitState : RefCounted<OSRExit
|
||||
void* jumpTarget;
|
||||
ArrayProfile* arrayProfile;
|
||||
|
||||
- ExtraInitializationLevel extraInitializationLevel;
|
||||
+ ExtraInitializationLevel extraInitializationLevel { };
|
||||
Profiler::OSRExit* profilerExit { nullptr };
|
||||
};
|
||||
|
||||
diff -up webkitgtk-2.20.3/Source/JavaScriptCore/runtime/ConfigFile.cpp.covscan_fixes_uninit_ctor webkitgtk-2.20.3/Source/JavaScriptCore/runtime/ConfigFile.cpp
|
||||
--- webkitgtk-2.20.3/Source/JavaScriptCore/runtime/ConfigFile.cpp.covscan_fixes_uninit_ctor 2018-06-11 10:16:31.000000000 +0200
|
||||
+++ webkitgtk-2.20.3/Source/JavaScriptCore/runtime/ConfigFile.cpp 2018-06-18 09:07:12.035744801 +0200
|
||||
@@ -233,7 +233,7 @@ private:
|
||||
|
||||
const char* m_filename;
|
||||
unsigned m_lineNumber;
|
||||
- FILE* m_file;
|
||||
+ FILE* m_file { nullptr };
|
||||
char m_buffer[BUFSIZ];
|
||||
char* m_srcPtr;
|
||||
char* m_bufferEnd;
|
||||
diff -up webkitgtk-2.20.3/Source/JavaScriptCore/runtime/JSBigInt.h.covscan_fixes_uninit_ctor webkitgtk-2.20.3/Source/JavaScriptCore/runtime/JSBigInt.h
|
||||
--- webkitgtk-2.20.3/Source/JavaScriptCore/runtime/JSBigInt.h.covscan_fixes_uninit_ctor 2018-02-19 08:45:17.000000000 +0100
|
||||
+++ webkitgtk-2.20.3/Source/JavaScriptCore/runtime/JSBigInt.h 2018-06-18 09:07:12.035744801 +0200
|
||||
@@ -84,7 +84,7 @@ public:
|
||||
double toNumber(ExecState*) const;
|
||||
|
||||
JSObject* toObject(ExecState*, JSGlobalObject*) const;
|
||||
-
|
||||
+
|
||||
private:
|
||||
using Digit = uintptr_t;
|
||||
static constexpr const int bitsPerByte = 8;
|
||||
@@ -92,15 +92,15 @@ private:
|
||||
static constexpr const int halfDigitBits = digitBits / 2;
|
||||
static constexpr const Digit halfDigitMask = (1ull << halfDigitBits) - 1;
|
||||
static constexpr const int maxInt = 0x7FFFFFFF;
|
||||
-
|
||||
+
|
||||
// The maximum length that the current implementation supports would be
|
||||
// maxInt / digitBits. However, we use a lower limit for now, because
|
||||
// raising it later is easier than lowering it.
|
||||
// Support up to 1 million bits.
|
||||
static const int maxLength = 1024 * 1024 / (sizeof(void*) * bitsPerByte);
|
||||
-
|
||||
+
|
||||
static uint64_t calculateMaximumCharactersRequired(int length, int radix, Digit lastDigit, bool sign);
|
||||
-
|
||||
+
|
||||
static void absoluteDivSmall(ExecState&, JSBigInt* x, Digit divisor, JSBigInt** quotient, Digit& remainder);
|
||||
static void internalMultiplyAdd(JSBigInt* source, Digit factor, Digit summand, int, JSBigInt* result);
|
||||
|
||||
@@ -126,15 +126,15 @@ private:
|
||||
JSBigInt* rightTrim(VM&);
|
||||
|
||||
void inplaceMultiplyAdd(Digit multiplier, Digit part);
|
||||
-
|
||||
+
|
||||
static size_t offsetOfData();
|
||||
Digit* dataStorage();
|
||||
|
||||
Digit digit(int);
|
||||
void setDigit(int, Digit);
|
||||
-
|
||||
- int m_length;
|
||||
- bool m_sign;
|
||||
+
|
||||
+ int m_length { 0 };
|
||||
+ bool m_sign { false };
|
||||
};
|
||||
|
||||
inline JSBigInt* asBigInt(JSValue value)
|
||||
diff -up webkitgtk-2.20.3/Source/JavaScriptCore/runtime/PropertySlot.h.covscan_fixes_uninit_ctor webkitgtk-2.20.3/Source/JavaScriptCore/runtime/PropertySlot.h
|
||||
--- webkitgtk-2.20.3/Source/JavaScriptCore/runtime/PropertySlot.h.covscan_fixes_uninit_ctor 2018-02-19 08:45:17.000000000 +0100
|
||||
+++ webkitgtk-2.20.3/Source/JavaScriptCore/runtime/PropertySlot.h 2018-06-18 09:07:12.035744801 +0200
|
||||
@@ -368,7 +368,7 @@ private:
|
||||
JS_EXPORT_PRIVATE JSValue customGetter(ExecState*, PropertyName) const;
|
||||
JS_EXPORT_PRIVATE JSValue customAccessorGetter(ExecState*, PropertyName) const;
|
||||
|
||||
- unsigned m_attributes;
|
||||
+ unsigned m_attributes { 0 };
|
||||
union {
|
||||
EncodedJSValue value;
|
||||
struct {
|
||||
diff -up webkitgtk-2.20.3/Source/JavaScriptCore/wasm/js/WasmToJS.cpp.covscan_fixes_uninit_ctor webkitgtk-2.20.3/Source/JavaScriptCore/wasm/js/WasmToJS.cpp
|
||||
--- webkitgtk-2.20.3/Source/JavaScriptCore/wasm/js/WasmToJS.cpp.covscan_fixes_uninit_ctor 2018-03-05 12:42:39.000000000 +0100
|
||||
+++ webkitgtk-2.20.3/Source/JavaScriptCore/wasm/js/WasmToJS.cpp 2018-06-18 09:07:12.035744801 +0200
|
||||
@@ -264,7 +264,7 @@ Expected<MacroAssemblerCodeRef, BindingF
|
||||
JSValue result = call(exec, callee, callType, callData, jsUndefined(), args);
|
||||
RETURN_IF_EXCEPTION(throwScope, 0);
|
||||
|
||||
- uint64_t realResult;
|
||||
+ uint64_t realResult = 0;
|
||||
switch (signature.returnType()) {
|
||||
case Func:
|
||||
case Anyfunc:
|
||||
diff -up webkitgtk-2.20.3/Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp.covscan_fixes_uninit_ctor webkitgtk-2.20.3/Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp
|
||||
--- webkitgtk-2.20.3/Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp.covscan_fixes_uninit_ctor 2018-03-05 11:37:06.000000000 +0100
|
||||
+++ webkitgtk-2.20.3/Source/JavaScriptCore/wasm/WasmB3IRGenerator.cpp 2018-06-18 09:07:12.036744797 +0200
|
||||
@@ -147,10 +147,10 @@ public:
|
||||
|
||||
private:
|
||||
friend class B3IRGenerator;
|
||||
- BlockType blockType;
|
||||
- BasicBlock* continuation;
|
||||
- BasicBlock* special;
|
||||
- ResultList result;
|
||||
+ BlockType blockType { };
|
||||
+ BasicBlock* continuation { nullptr };
|
||||
+ BasicBlock* special { nullptr };
|
||||
+ ResultList result { };
|
||||
};
|
||||
|
||||
typedef Value* ExpressionType;
|
||||
diff -up webkitgtk-2.20.3/Source/JavaScriptCore/wasm/WasmFormat.h.covscan_fixes_uninit_ctor webkitgtk-2.20.3/Source/JavaScriptCore/wasm/WasmFormat.h
|
||||
--- webkitgtk-2.20.3/Source/JavaScriptCore/wasm/WasmFormat.h.covscan_fixes_uninit_ctor 2018-02-19 08:45:17.000000000 +0100
|
||||
+++ webkitgtk-2.20.3/Source/JavaScriptCore/wasm/WasmFormat.h 2018-06-18 09:07:12.036744797 +0200
|
||||
@@ -226,7 +226,7 @@ public:
|
||||
std::optional<uint32_t> maximum() const { return m_maximum; }
|
||||
|
||||
private:
|
||||
- uint32_t m_initial;
|
||||
+ uint32_t m_initial { 0 };
|
||||
std::optional<uint32_t> m_maximum;
|
||||
bool m_isImport { false };
|
||||
bool m_isValid { false };
|
||||
diff -up webkitgtk-2.20.3/Source/JavaScriptCore/wasm/WasmFunctionParser.h.covscan_fixes_uninit_ctor webkitgtk-2.20.3/Source/JavaScriptCore/wasm/WasmFunctionParser.h
|
||||
--- webkitgtk-2.20.3/Source/JavaScriptCore/wasm/WasmFunctionParser.h.covscan_fixes_uninit_ctor 2018-02-19 08:45:17.000000000 +0100
|
||||
+++ webkitgtk-2.20.3/Source/JavaScriptCore/wasm/WasmFunctionParser.h 2018-06-18 09:07:12.036744797 +0200
|
||||
@@ -87,7 +87,7 @@ private:
|
||||
const Signature& m_signature;
|
||||
const ModuleInformation& m_info;
|
||||
|
||||
- OpType m_currentOpcode;
|
||||
+ OpType m_currentOpcode { };
|
||||
size_t m_currentOpcodeStartingOffset { 0 };
|
||||
|
||||
unsigned m_unreachableBlocks { 0 };
|
||||
diff -up webkitgtk-2.20.3/Source/JavaScriptCore/wasm/WasmTierUpCount.h.covscan_fixes_uninit_ctor webkitgtk-2.20.3/Source/JavaScriptCore/wasm/WasmTierUpCount.h
|
||||
--- webkitgtk-2.20.3/Source/JavaScriptCore/wasm/WasmTierUpCount.h.covscan_fixes_uninit_ctor 2018-02-19 08:45:17.000000000 +0100
|
||||
+++ webkitgtk-2.20.3/Source/JavaScriptCore/wasm/WasmTierUpCount.h 2018-06-18 09:07:12.037744793 +0200
|
||||
@@ -65,7 +65,7 @@ public:
|
||||
|
||||
private:
|
||||
uint32_t m_count;
|
||||
- Atomic<bool> m_tierUpStarted;
|
||||
+ Atomic<bool> m_tierUpStarted { false };
|
||||
};
|
||||
|
||||
} } // namespace JSC::Wasm
|
||||
diff -up webkitgtk-2.20.3/Source/JavaScriptCore/wasm/WasmValidate.cpp.covscan_fixes_uninit_ctor webkitgtk-2.20.3/Source/JavaScriptCore/wasm/WasmValidate.cpp
|
||||
--- webkitgtk-2.20.3/Source/JavaScriptCore/wasm/WasmValidate.cpp.covscan_fixes_uninit_ctor 2018-02-19 08:45:17.000000000 +0100
|
||||
+++ webkitgtk-2.20.3/Source/JavaScriptCore/wasm/WasmValidate.cpp 2018-06-18 09:07:12.037744793 +0200
|
||||
@@ -72,8 +72,8 @@ public:
|
||||
Type signature() const { return m_signature; }
|
||||
Type branchTargetSignature() const { return type() == BlockType::Loop ? Void : signature(); }
|
||||
private:
|
||||
- BlockType m_blockType;
|
||||
- Type m_signature;
|
||||
+ BlockType m_blockType { };
|
||||
+ Type m_signature { };
|
||||
};
|
||||
typedef String ErrorType;
|
||||
typedef Unexpected<ErrorType> UnexpectedResult;
|
||||
diff -up webkitgtk-2.20.3/Source/JavaScriptCore/yarr/YarrJIT.h.covscan_fixes_uninit_ctor webkitgtk-2.20.3/Source/JavaScriptCore/yarr/YarrJIT.h
|
||||
--- webkitgtk-2.20.3/Source/JavaScriptCore/yarr/YarrJIT.h.covscan_fixes_uninit_ctor 2018-02-20 10:12:50.000000000 +0100
|
||||
+++ webkitgtk-2.20.3/Source/JavaScriptCore/yarr/YarrJIT.h 2018-06-18 09:07:12.037744793 +0200
|
||||
@@ -201,7 +201,7 @@ private:
|
||||
MacroAssemblerCodeRef m_matchOnly8;
|
||||
MacroAssemblerCodeRef m_matchOnly16;
|
||||
#if ENABLE(YARR_JIT_ALL_PARENS_EXPRESSIONS)
|
||||
- bool m_usesPatternContextBuffer;
|
||||
+ bool m_usesPatternContextBuffer { false };
|
||||
#endif
|
||||
std::optional<JITFailureReason> m_failureReason;
|
||||
};
|
||||
diff -up webkitgtk-2.20.3/Source/WebCore/accessibility/AccessibilityTableColumn.h.covscan_fixes_uninit_ctor webkitgtk-2.20.3/Source/WebCore/accessibility/AccessibilityTableColumn.h
|
||||
--- webkitgtk-2.20.3/Source/WebCore/accessibility/AccessibilityTableColumn.h.covscan_fixes_uninit_ctor 2018-02-19 08:45:31.000000000 +0100
|
||||
+++ webkitgtk-2.20.3/Source/WebCore/accessibility/AccessibilityTableColumn.h 2018-06-18 09:07:12.037744793 +0200
|
||||
@@ -33,36 +33,36 @@
|
||||
#include "IntRect.h"
|
||||
|
||||
namespace WebCore {
|
||||
-
|
||||
+
|
||||
class RenderTableSection;
|
||||
|
||||
class AccessibilityTableColumn final : public AccessibilityMockObject {
|
||||
public:
|
||||
static Ref<AccessibilityTableColumn> create();
|
||||
virtual ~AccessibilityTableColumn();
|
||||
-
|
||||
+
|
||||
AccessibilityObject* headerObject();
|
||||
-
|
||||
+
|
||||
AccessibilityRole roleValue() const override { return AccessibilityRole::Column; }
|
||||
-
|
||||
+
|
||||
void setColumnIndex(int columnIndex) { m_columnIndex = columnIndex; }
|
||||
- int columnIndex() const { return m_columnIndex; }
|
||||
-
|
||||
+ int columnIndex() const { return m_columnIndex; }
|
||||
+
|
||||
void addChildren() override;
|
||||
void setParent(AccessibilityObject*) override;
|
||||
-
|
||||
+
|
||||
LayoutRect elementRect() const override;
|
||||
-
|
||||
+
|
||||
private:
|
||||
AccessibilityTableColumn();
|
||||
-
|
||||
+
|
||||
AccessibilityObject* headerObjectForSection(RenderTableSection*, bool thTagRequired);
|
||||
bool computeAccessibilityIsIgnored() const override;
|
||||
bool isTableColumn() const override { return true; }
|
||||
|
||||
- unsigned m_columnIndex;
|
||||
+ unsigned m_columnIndex { 0 };
|
||||
};
|
||||
|
||||
-} // namespace WebCore
|
||||
+} // namespace WebCore
|
||||
|
||||
SPECIALIZE_TYPE_TRAITS_ACCESSIBILITY(AccessibilityTableColumn, isTableColumn())
|
||||
diff -up webkitgtk-2.20.3/Source/WebCore/dom/RequestAnimationFrameCallback.h.covscan_fixes_uninit_ctor webkitgtk-2.20.3/Source/WebCore/dom/RequestAnimationFrameCallback.h
|
||||
--- webkitgtk-2.20.3/Source/WebCore/dom/RequestAnimationFrameCallback.h.covscan_fixes_uninit_ctor 2018-02-19 08:45:32.000000000 +0100
|
||||
+++ webkitgtk-2.20.3/Source/WebCore/dom/RequestAnimationFrameCallback.h 2018-06-18 09:07:12.037744793 +0200
|
||||
@@ -42,9 +42,9 @@ public:
|
||||
|
||||
virtual CallbackResult<void> handleEvent(double highResTimeMs) = 0;
|
||||
|
||||
- int m_id;
|
||||
- bool m_firedOrCancelled;
|
||||
- bool m_useLegacyTimeBase;
|
||||
+ int m_id { 0 };
|
||||
+ bool m_firedOrCancelled { false };
|
||||
+ bool m_useLegacyTimeBase { false };
|
||||
};
|
||||
|
||||
} // namespace WebCore
|
||||
diff -up webkitgtk-2.20.3/Source/WebCore/html/HTMLMediaElement.cpp.covscan_fixes_uninit_ctor webkitgtk-2.20.3/Source/WebCore/html/HTMLMediaElement.cpp
|
||||
--- webkitgtk-2.20.3/Source/WebCore/html/HTMLMediaElement.cpp.covscan_fixes_uninit_ctor 2018-02-19 12:04:38.000000000 +0100
|
||||
+++ webkitgtk-2.20.3/Source/WebCore/html/HTMLMediaElement.cpp 2018-06-18 09:07:12.039744785 +0200
|
||||
@@ -2105,9 +2105,10 @@ bool HTMLMediaElement::isSafeToLoadURL(c
|
||||
|
||||
RefPtr<Frame> frame = document().frame();
|
||||
if (!frame || !document().securityOrigin().canDisplay(url)) {
|
||||
- if (actionIfInvalid == Complain)
|
||||
+ if (actionIfInvalid == Complain) {
|
||||
FrameLoader::reportLocalLoadFailed(frame.get(), url.stringCenterEllipsizedToLength());
|
||||
ERROR_LOG(LOGIDENTIFIER, url , " was rejected by SecurityOrigin");
|
||||
+ }
|
||||
return false;
|
||||
}
|
||||
|
||||
diff -up webkitgtk-2.20.3/Source/WebCore/html/HTMLMenuElement.h.covscan_fixes_uninit_ctor webkitgtk-2.20.3/Source/WebCore/html/HTMLMenuElement.h
|
||||
--- webkitgtk-2.20.3/Source/WebCore/html/HTMLMenuElement.h.covscan_fixes_uninit_ctor 2018-02-19 08:45:32.000000000 +0100
|
||||
+++ webkitgtk-2.20.3/Source/WebCore/html/HTMLMenuElement.h 2018-06-18 09:07:12.039744785 +0200
|
||||
@@ -39,7 +39,7 @@ private:
|
||||
void removedFromAncestor(RemovalType, ContainerNode&) final;
|
||||
void parseAttribute(const QualifiedName&, const AtomicString&) final;
|
||||
|
||||
- bool m_isTouchBarMenu;
|
||||
+ bool m_isTouchBarMenu { false };
|
||||
};
|
||||
|
||||
} // namespace WebCore
|
||||
diff -up webkitgtk-2.20.3/Source/WebCore/Modules/webaudio/AudioProcessingEvent.h.covscan_fixes_uninit_ctor webkitgtk-2.20.3/Source/WebCore/Modules/webaudio/AudioProcessingEvent.h
|
||||
--- webkitgtk-2.20.3/Source/WebCore/Modules/webaudio/AudioProcessingEvent.h.covscan_fixes_uninit_ctor 2018-02-19 08:45:31.000000000 +0100
|
||||
+++ webkitgtk-2.20.3/Source/WebCore/Modules/webaudio/AudioProcessingEvent.h 2018-06-18 09:07:12.040744781 +0200
|
||||
@@ -58,7 +58,7 @@ private:
|
||||
|
||||
RefPtr<AudioBuffer> m_inputBuffer;
|
||||
RefPtr<AudioBuffer> m_outputBuffer;
|
||||
- double m_playbackTime;
|
||||
+ double m_playbackTime { 0.0 };
|
||||
};
|
||||
|
||||
} // namespace WebCore
|
||||
diff -up webkitgtk-2.20.3/Source/WebCore/Modules/webaudio/DelayDSPKernel.h.covscan_fixes_uninit_ctor webkitgtk-2.20.3/Source/WebCore/Modules/webaudio/DelayDSPKernel.h
|
||||
--- webkitgtk-2.20.3/Source/WebCore/Modules/webaudio/DelayDSPKernel.h.covscan_fixes_uninit_ctor 2018-02-19 08:45:31.000000000 +0100
|
||||
+++ webkitgtk-2.20.3/Source/WebCore/Modules/webaudio/DelayDSPKernel.h 2018-06-18 09:07:12.040744781 +0200
|
||||
@@ -31,17 +31,17 @@
|
||||
namespace WebCore {
|
||||
|
||||
class DelayProcessor;
|
||||
-
|
||||
+
|
||||
class DelayDSPKernel : public AudioDSPKernel {
|
||||
-public:
|
||||
+public:
|
||||
explicit DelayDSPKernel(DelayProcessor*);
|
||||
DelayDSPKernel(double maxDelayTime, float sampleRate);
|
||||
-
|
||||
+
|
||||
void process(const float* source, float* destination, size_t framesToProcess) override;
|
||||
void reset() override;
|
||||
-
|
||||
+
|
||||
double maxDelayTime() const { return m_maxDelayTime; }
|
||||
-
|
||||
+
|
||||
void setDelayFrames(double numberOfFrames) { m_desiredDelayFrames = numberOfFrames; }
|
||||
|
||||
double tailTime() const override;
|
||||
@@ -49,12 +49,12 @@ public:
|
||||
|
||||
private:
|
||||
AudioFloatArray m_buffer;
|
||||
- double m_maxDelayTime;
|
||||
+ double m_maxDelayTime { 0.0 };
|
||||
int m_writeIndex;
|
||||
- double m_currentDelayTime;
|
||||
- double m_smoothingRate;
|
||||
+ double m_currentDelayTime { 0.0 };
|
||||
+ double m_smoothingRate { 0.0 };
|
||||
bool m_firstTime;
|
||||
- double m_desiredDelayFrames;
|
||||
+ double m_desiredDelayFrames { 0.0 };
|
||||
|
||||
AudioFloatArray m_delayTimes;
|
||||
|
||||
diff -up webkitgtk-2.20.3/Source/WebCore/platform/graphics/ANGLEWebKitBridge.h.covscan_fixes_uninit_ctor webkitgtk-2.20.3/Source/WebCore/platform/graphics/ANGLEWebKitBridge.h
|
||||
--- webkitgtk-2.20.3/Source/WebCore/platform/graphics/ANGLEWebKitBridge.h.covscan_fixes_uninit_ctor 2018-02-19 08:45:32.000000000 +0100
|
||||
+++ webkitgtk-2.20.3/Source/WebCore/platform/graphics/ANGLEWebKitBridge.h 2018-06-18 09:07:12.040744781 +0200
|
||||
@@ -85,7 +85,7 @@ private:
|
||||
ShShaderOutput m_shaderOutput;
|
||||
ShShaderSpec m_shaderSpec;
|
||||
|
||||
- ShBuiltInResources m_resources;
|
||||
+ ShBuiltInResources m_resources { };
|
||||
};
|
||||
|
||||
} // namespace WebCore
|
||||
diff -up webkitgtk-2.20.3/Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayerBuffer.h.covscan_fixes_uninit_ctor webkitgtk-2.20.3/Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayerBuffer.h
|
||||
--- webkitgtk-2.20.3/Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayerBuffer.h.covscan_fixes_uninit_ctor 2018-02-19 08:45:32.000000000 +0100
|
||||
+++ webkitgtk-2.20.3/Source/WebCore/platform/graphics/texmap/TextureMapperPlatformLayerBuffer.h 2018-06-18 09:07:12.040744781 +0200
|
||||
@@ -72,7 +72,7 @@ private:
|
||||
|
||||
GLuint m_textureID;
|
||||
IntSize m_size;
|
||||
- GLint m_internalFormat;
|
||||
+ GLint m_internalFormat { 0 };
|
||||
TextureMapperGL::Flags m_extraFlags;
|
||||
bool m_hasManagedTexture;
|
||||
std::unique_ptr<UnmanagedBufferDataHolder> m_unmanagedBufferDataHolder;
|
||||
diff -up webkitgtk-2.20.3/Source/WebCore/platform/gtk/ScrollbarThemeGtk.h.covscan_fixes_uninit_ctor webkitgtk-2.20.3/Source/WebCore/platform/gtk/ScrollbarThemeGtk.h
|
||||
--- webkitgtk-2.20.3/Source/WebCore/platform/gtk/ScrollbarThemeGtk.h.covscan_fixes_uninit_ctor 2018-02-19 08:45:32.000000000 +0100
|
||||
+++ webkitgtk-2.20.3/Source/WebCore/platform/gtk/ScrollbarThemeGtk.h 2018-06-18 09:07:12.041744777 +0200
|
||||
@@ -61,10 +61,10 @@ public:
|
||||
private:
|
||||
void updateThemeProperties();
|
||||
|
||||
- bool m_hasForwardButtonStartPart : 1;
|
||||
- bool m_hasForwardButtonEndPart : 1;
|
||||
- bool m_hasBackButtonStartPart : 1;
|
||||
- bool m_hasBackButtonEndPart : 1;
|
||||
+ bool m_hasForwardButtonStartPart { true };
|
||||
+ bool m_hasForwardButtonEndPart { true };
|
||||
+ bool m_hasBackButtonStartPart { true };
|
||||
+ bool m_hasBackButtonEndPart { true };
|
||||
bool m_usesOverlayScrollbars { false };
|
||||
#endif // GTK_API_VERSION_2
|
||||
};
|
||||
diff -up webkitgtk-2.20.3/Source/WebCore/platform/image-decoders/jpeg/JPEGImageDecoder.cpp.covscan_fixes_uninit_ctor webkitgtk-2.20.3/Source/WebCore/platform/image-decoders/jpeg/JPEGImageDecoder.cpp
|
||||
--- webkitgtk-2.20.3/Source/WebCore/platform/image-decoders/jpeg/JPEGImageDecoder.cpp.covscan_fixes_uninit_ctor 2018-02-19 08:45:32.000000000 +0100
|
||||
+++ webkitgtk-2.20.3/Source/WebCore/platform/image-decoders/jpeg/JPEGImageDecoder.cpp 2018-06-18 09:07:12.042744773 +0200
|
||||
@@ -454,10 +454,10 @@ private:
|
||||
JPEGImageDecoder* m_decoder;
|
||||
unsigned m_bufferLength;
|
||||
int m_bytesToSkip;
|
||||
- bool m_decodingSizeOnly;
|
||||
+ bool m_decodingSizeOnly { false };
|
||||
|
||||
jpeg_decompress_struct m_info;
|
||||
- decoder_error_mgr m_err;
|
||||
+ decoder_error_mgr m_err { };
|
||||
jstate m_state;
|
||||
|
||||
JSAMPARRAY m_samples;
|
||||
diff -up webkitgtk-2.20.3/Source/WebCore/platform/text/TextCodecUTF16.h.covscan_fixes_uninit_ctor webkitgtk-2.20.3/Source/WebCore/platform/text/TextCodecUTF16.h
|
||||
--- webkitgtk-2.20.3/Source/WebCore/platform/text/TextCodecUTF16.h.covscan_fixes_uninit_ctor 2018-02-19 08:45:32.000000000 +0100
|
||||
+++ webkitgtk-2.20.3/Source/WebCore/platform/text/TextCodecUTF16.h 2018-06-18 09:07:12.042744773 +0200
|
||||
@@ -42,7 +42,7 @@ private:
|
||||
|
||||
bool m_littleEndian;
|
||||
bool m_haveBufferedByte { false };
|
||||
- unsigned char m_bufferedByte;
|
||||
+ unsigned char m_bufferedByte { 0 };
|
||||
};
|
||||
|
||||
} // namespace WebCore
|
||||
diff -up webkitgtk-2.20.3/Source/WebCore/platform/URL.h.covscan_fixes_uninit_ctor webkitgtk-2.20.3/Source/WebCore/platform/URL.h
|
||||
--- webkitgtk-2.20.3/Source/WebCore/platform/URL.h.covscan_fixes_uninit_ctor 2018-04-09 13:02:14.000000000 +0200
|
||||
+++ webkitgtk-2.20.3/Source/WebCore/platform/URL.h 2018-06-18 09:07:12.043744769 +0200
|
||||
@@ -218,19 +218,19 @@ private:
|
||||
bool hasPath() const;
|
||||
|
||||
String m_string;
|
||||
- bool m_isValid : 1;
|
||||
- bool m_protocolIsInHTTPFamily : 1;
|
||||
- bool m_cannotBeABaseURL : 1;
|
||||
+ bool m_isValid { true };
|
||||
+ bool m_protocolIsInHTTPFamily { true };
|
||||
+ bool m_cannotBeABaseURL { true };
|
||||
|
||||
- unsigned m_schemeEnd;
|
||||
- unsigned m_userStart;
|
||||
- unsigned m_userEnd;
|
||||
- unsigned m_passwordEnd;
|
||||
- unsigned m_hostEnd;
|
||||
- unsigned m_portEnd;
|
||||
- unsigned m_pathAfterLastSlash;
|
||||
- unsigned m_pathEnd;
|
||||
- unsigned m_queryEnd;
|
||||
+ unsigned m_schemeEnd { 0 };
|
||||
+ unsigned m_userStart { 0 };
|
||||
+ unsigned m_userEnd { 0 };
|
||||
+ unsigned m_passwordEnd { 0 };
|
||||
+ unsigned m_hostEnd { 0 };
|
||||
+ unsigned m_portEnd { 0 };
|
||||
+ unsigned m_pathAfterLastSlash { 0 };
|
||||
+ unsigned m_pathEnd { 0 };
|
||||
+ unsigned m_queryEnd { 0 };
|
||||
};
|
||||
|
||||
template <class Encoder>
|
||||
diff -up webkitgtk-2.20.3/Source/WebCore/rendering/RenderFragmentedFlow.h.covscan_fixes_uninit_ctor webkitgtk-2.20.3/Source/WebCore/rendering/RenderFragmentedFlow.h
|
||||
--- webkitgtk-2.20.3/Source/WebCore/rendering/RenderFragmentedFlow.h.covscan_fixes_uninit_ctor 2018-02-26 17:00:31.000000000 +0100
|
||||
+++ webkitgtk-2.20.3/Source/WebCore/rendering/RenderFragmentedFlow.h 2018-06-18 09:07:12.043744769 +0200
|
||||
@@ -231,7 +231,7 @@ protected:
|
||||
private:
|
||||
WeakPtr<RenderFragmentContainer> m_startFragment;
|
||||
WeakPtr<RenderFragmentContainer> m_endFragment;
|
||||
- bool m_rangeInvalidated;
|
||||
+ bool m_rangeInvalidated { false };
|
||||
};
|
||||
|
||||
typedef PODInterval<LayoutUnit, RenderFragmentContainer*> FragmentInterval;
|
||||
diff -up webkitgtk-2.20.3/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.h.covscan_fixes_uninit_ctor webkitgtk-2.20.3/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.h
|
||||
--- webkitgtk-2.20.3/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.h.covscan_fixes_uninit_ctor 2018-02-19 08:45:32.000000000 +0100
|
||||
+++ webkitgtk-2.20.3/Source/WebKit/NetworkProcess/NetworkProcessCreationParameters.h 2018-06-18 09:07:12.043744769 +0200
|
||||
@@ -58,7 +58,7 @@ struct NetworkProcessCreationParameters
|
||||
bool canHandleHTTPSServerTrustEvaluation { true };
|
||||
|
||||
String cacheStorageDirectory;
|
||||
- uint64_t cacheStoragePerOriginQuota;
|
||||
+ uint64_t cacheStoragePerOriginQuota { 0 };
|
||||
SandboxExtension::Handle cacheStorageDirectoryExtensionHandle;
|
||||
String diskCacheDirectory;
|
||||
SandboxExtension::Handle diskCacheDirectoryExtensionHandle;
|
||||
diff -up webkitgtk-2.20.3/Source/WebKit/Shared/Plugins/PluginProcessCreationParameters.h.covscan_fixes_uninit_ctor webkitgtk-2.20.3/Source/WebKit/Shared/Plugins/PluginProcessCreationParameters.h
|
||||
--- webkitgtk-2.20.3/Source/WebKit/Shared/Plugins/PluginProcessCreationParameters.h.covscan_fixes_uninit_ctor 2018-02-19 08:45:32.000000000 +0100
|
||||
+++ webkitgtk-2.20.3/Source/WebKit/Shared/Plugins/PluginProcessCreationParameters.h 2018-06-18 09:07:12.045744761 +0200
|
||||
@@ -49,7 +49,7 @@ struct PluginProcessCreationParameters {
|
||||
void encode(IPC::Encoder&) const;
|
||||
static bool decode(IPC::Decoder&, PluginProcessCreationParameters&);
|
||||
|
||||
- PluginProcessType processType;
|
||||
+ PluginProcessType processType { PluginProcessTypeNormal };
|
||||
bool supportsAsynchronousPluginInitialization;
|
||||
|
||||
Seconds minimumLifetime;
|
||||
diff -up webkitgtk-2.20.3/Source/WebKit/UIProcess/API/glib/IconDatabase.h.covscan_fixes_uninit_ctor webkitgtk-2.20.3/Source/WebKit/UIProcess/API/glib/IconDatabase.h
|
||||
--- webkitgtk-2.20.3/Source/WebKit/UIProcess/API/glib/IconDatabase.h.covscan_fixes_uninit_ctor 2018-02-19 08:45:33.000000000 +0100
|
||||
+++ webkitgtk-2.20.3/Source/WebKit/UIProcess/API/glib/IconDatabase.h 2018-06-18 09:07:12.050744740 +0200
|
||||
@@ -226,7 +226,7 @@ private:
|
||||
|
||||
Deque<Function<void()>> m_notificationQueue;
|
||||
Lock m_notificationQueueLock;
|
||||
- Atomic<bool> m_isActive;
|
||||
+ Atomic<bool> m_isActive { false };
|
||||
RunLoop::Timer<MainThreadNotifier> m_timer;
|
||||
};
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
From 726cf686973683b1af76e3d9f5029cbe6d82edad Mon Sep 17 00:00:00 2001
|
||||
From: Tomas Popela <tpopela@redhat.com>
|
||||
Date: Tue, 24 Jul 2018 13:21:55 +0200
|
||||
Subject: [PATCH 2/2] wip
|
||||
|
||||
---
|
||||
Source/WTF/wtf/text/WTFString.cpp | 11 +++++++----
|
||||
1 file changed, 7 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/Source/WTF/wtf/text/WTFString.cpp b/Source/WTF/wtf/text/WTFString.cpp
|
||||
index 9c5edd6a992..57bf1f8d06a 100644
|
||||
--- a/Source/WTF/wtf/text/WTFString.cpp
|
||||
+++ b/Source/WTF/wtf/text/WTFString.cpp
|
||||
@@ -462,7 +462,7 @@ WTF_ATTRIBUTE_PRINTF(1, 0) static String createWithFormatAndArguments(const char
|
||||
if (strstr(format, "%@")) {
|
||||
auto cfFormat = adoptCF(CFStringCreateWithCString(kCFAllocatorDefault, format, kCFStringEncodingUTF8));
|
||||
auto result = adoptCF(CFStringCreateWithFormatAndArguments(kCFAllocatorDefault, nullptr, cfFormat.get(), args));
|
||||
- va_end(args);
|
||||
+ va_end(argsCopy);
|
||||
return result.get();
|
||||
}
|
||||
#endif
|
||||
@@ -474,12 +474,15 @@ WTF_ATTRIBUTE_PRINTF(1, 0) static String createWithFormatAndArguments(const char
|
||||
char ch;
|
||||
int result = vsnprintf(&ch, 1, format, args);
|
||||
#endif
|
||||
- va_end(args);
|
||||
|
||||
- if (result == 0)
|
||||
+ if (!result) {
|
||||
+ va_end(argsCopy);
|
||||
return emptyString();
|
||||
- if (result < 0)
|
||||
+ }
|
||||
+ if (result < 0) {
|
||||
+ va_end(argsCopy);
|
||||
return String();
|
||||
+ }
|
||||
|
||||
Vector<char, 256> buffer;
|
||||
unsigned len = result;
|
||||
--
|
||||
2.17.1
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
diff --git a/Source/WTF/wtf/CheckedArithmetic.h b/Source/WTF/wtf/CheckedArithmetic.h
|
||||
index 31be98b0929b5924bd5dfee55482af8d3807d9ca..e668bf8a8364c6959e146084e77dd64d5af26987 100644
|
||||
--- a/Source/WTF/wtf/CheckedArithmetic.h
|
||||
+++ b/Source/WTF/wtf/CheckedArithmetic.h
|
||||
@@ -489,7 +489,7 @@ template <typename ResultType> struct ArithmeticOperations<unsigned, int, Result
|
||||
|
||||
static inline bool multiply(int64_t lhs, int64_t rhs, ResultType& result)
|
||||
{
|
||||
- return ArithmeticOperations<int, unsigned, ResultType>::multiply(rhs, lhs, result);
|
||||
+ return ArithmeticOperations<int, unsigned, ResultType>::multiply(lhs, rhs, result);
|
||||
}
|
||||
|
||||
static inline bool equals(unsigned lhs, int rhs)
|
||||
diff --git a/Source/WTF/wtf/ThreadSpecific.h b/Source/WTF/wtf/ThreadSpecific.h
|
||||
index 1be1204cddf694521e82a576b8854237d0b59ee1..fc75b241e9eb6510d8cdd7c3fd0a3c1049b87d8e 100644
|
||||
--- a/Source/WTF/wtf/ThreadSpecific.h
|
||||
+++ b/Source/WTF/wtf/ThreadSpecific.h
|
||||
@@ -122,7 +122,7 @@ private:
|
||||
void static THREAD_SPECIFIC_CALL destroy(void* ptr);
|
||||
|
||||
#if USE(PTHREADS)
|
||||
- pthread_key_t m_key;
|
||||
+ pthread_key_t m_key { };
|
||||
#elif OS(WINDOWS)
|
||||
int m_index;
|
||||
#endif
|
||||
diff --git a/Source/WTF/wtf/dtoa.cpp b/Source/WTF/wtf/dtoa.cpp
|
||||
index edefd7f884305fc2c20cb3f3bc571a7f980e30f7..7b5f59290101c3abb754c55f1ea4e11a7ec23258 100644
|
||||
--- a/Source/WTF/wtf/dtoa.cpp
|
||||
+++ b/Source/WTF/wtf/dtoa.cpp
|
||||
@@ -360,7 +360,7 @@ struct P5Node {
|
||||
public:
|
||||
P5Node() { }
|
||||
BigInt val;
|
||||
- P5Node* next;
|
||||
+ P5Node* next { nullptr };
|
||||
};
|
||||
|
||||
static P5Node* p5s;
|
|
@ -0,0 +1,35 @@
|
|||
From ecbb859d88eacad10bf556044abaeaed6c9b32fc Mon Sep 17 00:00:00 2001
|
||||
From: "berto@igalia.com"
|
||||
<berto@igalia.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
|
||||
Date: Thu, 2 Nov 2017 13:41:16 +0000
|
||||
Subject: [PATCH] Unreviewed, fix typos in library names for the GTK+ port.
|
||||
|
||||
* Source/cmake/OptionsGTK.cmake:
|
||||
|
||||
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@224329 268f45cc-cd09-0410-ab3c-d52691b4dbfc
|
||||
---
|
||||
ChangeLog | 6 ++++++
|
||||
Source/cmake/OptionsGTK.cmake | 4 ++--
|
||||
2 files changed, 8 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/Source/cmake/OptionsGTK.cmake b/Source/cmake/OptionsGTK.cmake
|
||||
index 2b440a27376..6c99868ae86 100644
|
||||
--- a/Source/cmake/OptionsGTK.cmake
|
||||
+++ b/Source/cmake/OptionsGTK.cmake
|
||||
@@ -367,11 +367,11 @@ endif ()
|
||||
if (USE_WOFF2)
|
||||
find_package(BrotliDec 1.0.1)
|
||||
if (NOT BROTLIDEC_FOUND)
|
||||
- message(FATAL_ERROR "librotlidec is needed for USE_WOFF2.")
|
||||
+ message(FATAL_ERROR "libbrotlidec is needed for USE_WOFF2.")
|
||||
endif ()
|
||||
find_package(WOFF2Dec 1.0.1)
|
||||
if (NOT WOFF2DEC_FOUND)
|
||||
- message(FATAL_ERROR "liwoff2dec is needed for USE_WOFF2.")
|
||||
+ message(FATAL_ERROR "libwoff2dec is needed for USE_WOFF2.")
|
||||
endif ()
|
||||
endif ()
|
||||
|
||||
--
|
||||
2.16.2
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
diff -up webkitgtk-2.16.6/Source/cmake/OptionsGTK.cmake.libgcrypt webkitgtk-2.16.6/Source/cmake/OptionsGTK.cmake
|
||||
--- webkitgtk-2.16.6/Source/cmake/OptionsGTK.cmake.libgcrypt 2017-08-07 11:55:53.254869026 +0200
|
||||
+++ webkitgtk-2.16.6/Source/cmake/OptionsGTK.cmake 2017-08-07 11:56:11.259673114 +0200
|
||||
@@ -32,7 +32,7 @@ set(INTROSPECTION_INSTALL_TYPELIBDIR "${
|
||||
find_package(Cairo 1.10.2 REQUIRED)
|
||||
find_package(Fontconfig 2.8.0 REQUIRED)
|
||||
find_package(Freetype2 2.4.2 REQUIRED)
|
||||
-find_package(LibGcrypt 1.6.0 REQUIRED)
|
||||
+find_package(LibGcrypt 1.5.3 REQUIRED)
|
||||
find_package(GTK3 3.6.0 REQUIRED)
|
||||
find_package(GDK3 3.6.0 REQUIRED)
|
||||
find_package(HarfBuzz 0.9.2 REQUIRED)
|
|
@ -0,0 +1,15 @@
|
|||
diff -up webkitgtk-2.20.3/Source/JavaScriptCore/runtime/HashMapImpl.h.memset_zero_length webkitgtk-2.20.3/Source/JavaScriptCore/runtime/HashMapImpl.h
|
||||
--- webkitgtk-2.20.3/Source/JavaScriptCore/runtime/HashMapImpl.h.memset_zero_length 2018-02-19 08:45:16.000000000 +0100
|
||||
+++ webkitgtk-2.20.3/Source/JavaScriptCore/runtime/HashMapImpl.h 2018-06-26 09:29:58.672408600 +0200
|
||||
@@ -220,7 +220,10 @@ public:
|
||||
|
||||
ALWAYS_INLINE void reset(uint32_t capacity)
|
||||
{
|
||||
- memset(this, -1, allocationSize(capacity));
|
||||
+#if COMPILER(GCC_OR_CLANG) && defined(_FORTIFY_SOURCE)
|
||||
+ if (capacity && allocationSize(capacity))
|
||||
+#endif
|
||||
+ memset(this, -1, allocationSize(capacity));
|
||||
}
|
||||
};
|
||||
|
|
@ -0,0 +1,197 @@
|
|||
diff --git a/Tools/MiniBrowser/gtk/BrowserWindow.c b/Tools/MiniBrowser/gtk/BrowserWindow.c
|
||||
index ece39c1b3c4..36b30657c9a 100644
|
||||
--- a/Tools/MiniBrowser/gtk/BrowserWindow.c
|
||||
+++ b/Tools/MiniBrowser/gtk/BrowserWindow.c
|
||||
@@ -491,6 +491,7 @@ static void faviconChanged(WebKitWebView *webView, GParamSpec *paramSpec, Browse
|
||||
static void webViewIsLoadingChanged(WebKitWebView *webView, GParamSpec *paramSpec, BrowserWindow *window)
|
||||
{
|
||||
gboolean isLoading = webkit_web_view_is_loading(webView);
|
||||
+ gtk_tool_button_set_label(GTK_TOOL_BUTTON(window->reloadOrStopButton), isLoading ? "Stop" : "Reload");
|
||||
gtk_tool_button_set_stock_id(GTK_TOOL_BUTTON(window->reloadOrStopButton), isLoading ? GTK_STOCK_STOP : GTK_STOCK_REFRESH);
|
||||
}
|
||||
|
||||
@@ -710,6 +711,7 @@ static void browserWindowSetupEditorToolbar(BrowserWindow *window)
|
||||
GtkToolItem *item = gtk_toggle_tool_button_new_from_stock(GTK_STOCK_BOLD);
|
||||
window->boldItem = GTK_WIDGET(item);
|
||||
gtk_widget_set_name(GTK_WIDGET(item), "Bold");
|
||||
+ gtk_tool_button_set_label(GTK_TOOL_BUTTON(item), "Bold");
|
||||
g_signal_connect(G_OBJECT(item), "toggled", G_CALLBACK(editingCommandCallback), window);
|
||||
gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, -1);
|
||||
gtk_widget_show(GTK_WIDGET(item));
|
||||
@@ -717,6 +719,7 @@ static void browserWindowSetupEditorToolbar(BrowserWindow *window)
|
||||
item = gtk_toggle_tool_button_new_from_stock(GTK_STOCK_ITALIC);
|
||||
window->italicItem = GTK_WIDGET(item);
|
||||
gtk_widget_set_name(GTK_WIDGET(item), "Italic");
|
||||
+ gtk_tool_button_set_label(GTK_TOOL_BUTTON(item), "Italic");
|
||||
g_signal_connect(G_OBJECT(item), "toggled", G_CALLBACK(editingCommandCallback), window);
|
||||
gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, -1);
|
||||
gtk_widget_show(GTK_WIDGET(item));
|
||||
@@ -724,12 +727,14 @@ static void browserWindowSetupEditorToolbar(BrowserWindow *window)
|
||||
item = gtk_toggle_tool_button_new_from_stock(GTK_STOCK_UNDERLINE);
|
||||
window->underlineItem = GTK_WIDGET(item);
|
||||
gtk_widget_set_name(GTK_WIDGET(item), "Underline");
|
||||
+ gtk_tool_button_set_label(GTK_TOOL_BUTTON(item), "Underline");
|
||||
g_signal_connect(G_OBJECT(item), "toggled", G_CALLBACK(editingCommandCallback), window);
|
||||
gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, -1);
|
||||
gtk_widget_show(GTK_WIDGET(item));
|
||||
|
||||
item = gtk_toggle_tool_button_new_from_stock(GTK_STOCK_STRIKETHROUGH);
|
||||
gtk_widget_set_name(GTK_WIDGET(item), "Strikethrough");
|
||||
+ gtk_tool_button_set_label(GTK_TOOL_BUTTON(item), "Strikethrough");
|
||||
window->strikethroughItem = GTK_WIDGET(item);
|
||||
g_signal_connect(G_OBJECT(item), "toggled", G_CALLBACK(editingCommandCallback), window);
|
||||
gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, -1);
|
||||
@@ -741,18 +746,21 @@ static void browserWindowSetupEditorToolbar(BrowserWindow *window)
|
||||
|
||||
item = gtk_tool_button_new_from_stock(GTK_STOCK_CUT);
|
||||
gtk_widget_set_name(GTK_WIDGET(item), WEBKIT_EDITING_COMMAND_CUT);
|
||||
+ gtk_tool_button_set_label(GTK_TOOL_BUTTON(item), WEBKIT_EDITING_COMMAND_CUT);
|
||||
g_signal_connect(G_OBJECT(item), "clicked", G_CALLBACK(editingCommandCallback), window);
|
||||
gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, -1);
|
||||
gtk_widget_show(GTK_WIDGET(item));
|
||||
|
||||
item = gtk_tool_button_new_from_stock(GTK_STOCK_COPY);
|
||||
gtk_widget_set_name(GTK_WIDGET(item), WEBKIT_EDITING_COMMAND_COPY);
|
||||
+ gtk_tool_button_set_label(GTK_TOOL_BUTTON(item), WEBKIT_EDITING_COMMAND_COPY);
|
||||
g_signal_connect(G_OBJECT(item), "clicked", G_CALLBACK(editingCommandCallback), window);
|
||||
gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, -1);
|
||||
gtk_widget_show(GTK_WIDGET(item));
|
||||
|
||||
item = gtk_tool_button_new_from_stock(GTK_STOCK_PASTE);
|
||||
gtk_widget_set_name(GTK_WIDGET(item), WEBKIT_EDITING_COMMAND_PASTE);
|
||||
+ gtk_tool_button_set_label(GTK_TOOL_BUTTON(item), WEBKIT_EDITING_COMMAND_PASTE);
|
||||
g_signal_connect(G_OBJECT(item), "clicked", G_CALLBACK(editingCommandCallback), window);
|
||||
gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, -1);
|
||||
gtk_widget_show(GTK_WIDGET(item));
|
||||
@@ -763,12 +771,14 @@ static void browserWindowSetupEditorToolbar(BrowserWindow *window)
|
||||
|
||||
item = gtk_tool_button_new_from_stock(GTK_STOCK_UNDO);
|
||||
gtk_widget_set_name(GTK_WIDGET(item), WEBKIT_EDITING_COMMAND_UNDO);
|
||||
+ gtk_tool_button_set_label(GTK_TOOL_BUTTON(item), WEBKIT_EDITING_COMMAND_UNDO);
|
||||
g_signal_connect(G_OBJECT(item), "clicked", G_CALLBACK(editingCommandCallback), window);
|
||||
gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, -1);
|
||||
gtk_widget_show(GTK_WIDGET(item));
|
||||
|
||||
item = gtk_tool_button_new_from_stock(GTK_STOCK_REDO);
|
||||
gtk_widget_set_name(GTK_WIDGET(item), WEBKIT_EDITING_COMMAND_REDO);
|
||||
+ gtk_tool_button_set_label(GTK_TOOL_BUTTON(item), WEBKIT_EDITING_COMMAND_REDO);
|
||||
g_signal_connect(G_OBJECT(item), "clicked", G_CALLBACK(editingCommandCallback), window);
|
||||
gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, -1);
|
||||
gtk_widget_show(GTK_WIDGET(item));
|
||||
@@ -780,6 +790,7 @@ static void browserWindowSetupEditorToolbar(BrowserWindow *window)
|
||||
item = gtk_radio_tool_button_new_from_stock(NULL, GTK_STOCK_JUSTIFY_LEFT);
|
||||
GSList *justifyRadioGroup = gtk_radio_tool_button_get_group(GTK_RADIO_TOOL_BUTTON(item));
|
||||
gtk_widget_set_name(GTK_WIDGET(item), "JustifyLeft");
|
||||
+ gtk_tool_button_set_label(GTK_TOOL_BUTTON(item), "Justify Left");
|
||||
g_signal_connect(G_OBJECT(item), "toggled", G_CALLBACK(editingCommandCallback), window);
|
||||
gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, -1);
|
||||
gtk_widget_show(GTK_WIDGET(item));
|
||||
@@ -787,12 +798,14 @@ static void browserWindowSetupEditorToolbar(BrowserWindow *window)
|
||||
item = gtk_radio_tool_button_new_from_stock(justifyRadioGroup, GTK_STOCK_JUSTIFY_CENTER);
|
||||
justifyRadioGroup = gtk_radio_tool_button_get_group(GTK_RADIO_TOOL_BUTTON(item));
|
||||
gtk_widget_set_name(GTK_WIDGET(item), "JustifyCenter");
|
||||
+ gtk_tool_button_set_label(GTK_TOOL_BUTTON(item), "Justify Center");
|
||||
g_signal_connect(G_OBJECT(item), "toggled", G_CALLBACK(editingCommandCallback), window);
|
||||
gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, -1);
|
||||
gtk_widget_show(GTK_WIDGET(item));
|
||||
|
||||
item = gtk_radio_tool_button_new_from_stock(justifyRadioGroup, GTK_STOCK_JUSTIFY_RIGHT);
|
||||
gtk_widget_set_name(GTK_WIDGET(item), "JustifyRight");
|
||||
+ gtk_tool_button_set_label(GTK_TOOL_BUTTON(item), "Justify Right");
|
||||
g_signal_connect(G_OBJECT(item), "toggled", G_CALLBACK(editingCommandCallback), window);
|
||||
gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, -1);
|
||||
gtk_widget_show(GTK_WIDGET(item));
|
||||
@@ -803,12 +816,14 @@ static void browserWindowSetupEditorToolbar(BrowserWindow *window)
|
||||
|
||||
item = gtk_tool_button_new_from_stock(GTK_STOCK_INDENT);
|
||||
gtk_widget_set_name(GTK_WIDGET(item), "Indent");
|
||||
+ gtk_tool_button_set_label(GTK_TOOL_BUTTON(item), "Indent");
|
||||
g_signal_connect(G_OBJECT(item), "clicked", G_CALLBACK(editingCommandCallback), window);
|
||||
gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, -1);
|
||||
gtk_widget_show(GTK_WIDGET(item));
|
||||
|
||||
item = gtk_tool_button_new_from_stock(GTK_STOCK_UNINDENT);
|
||||
gtk_widget_set_name(GTK_WIDGET(item), "Outdent");
|
||||
+ gtk_tool_button_set_label(GTK_TOOL_BUTTON(item), "Outdent");
|
||||
g_signal_connect(G_OBJECT(item), "clicked", G_CALLBACK(editingCommandCallback), window);
|
||||
gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, -1);
|
||||
gtk_widget_show(GTK_WIDGET(item));
|
||||
@@ -819,12 +834,14 @@ static void browserWindowSetupEditorToolbar(BrowserWindow *window)
|
||||
|
||||
item = gtk_tool_button_new(NULL, NULL);
|
||||
gtk_tool_button_set_icon_name(GTK_TOOL_BUTTON(item), "insert-image");
|
||||
+ gtk_tool_button_set_label(GTK_TOOL_BUTTON(item), "Insert Image");
|
||||
g_signal_connect(G_OBJECT(item), "clicked", G_CALLBACK(insertImageCommandCallback), window);
|
||||
gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, -1);
|
||||
gtk_widget_show(GTK_WIDGET(item));
|
||||
|
||||
item = gtk_tool_button_new(NULL, NULL);
|
||||
gtk_tool_button_set_icon_name(GTK_TOOL_BUTTON(item), "insert-link");
|
||||
+ gtk_tool_button_set_label(GTK_TOOL_BUTTON(item), "Insert Link");
|
||||
g_signal_connect(G_OBJECT(item), "clicked", G_CALLBACK(insertLinkCommandCallback), window);
|
||||
gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, -1);
|
||||
gtk_widget_show(GTK_WIDGET(item));
|
||||
@@ -976,6 +993,7 @@ static void browser_window_init(BrowserWindow *window)
|
||||
window->backItem = GTK_WIDGET(item);
|
||||
gtk_menu_tool_button_set_menu(GTK_MENU_TOOL_BUTTON(item), 0);
|
||||
g_signal_connect_swapped(item, "clicked", G_CALLBACK(goBackCallback), (gpointer)window);
|
||||
+ gtk_tool_button_set_label(GTK_TOOL_BUTTON(item), "Back");
|
||||
gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, -1);
|
||||
gtk_widget_show(GTK_WIDGET(item));
|
||||
|
||||
@@ -983,40 +1001,47 @@ static void browser_window_init(BrowserWindow *window)
|
||||
window->forwardItem = GTK_WIDGET(item);
|
||||
gtk_menu_tool_button_set_menu(GTK_MENU_TOOL_BUTTON(item), 0);
|
||||
g_signal_connect_swapped(G_OBJECT(item), "clicked", G_CALLBACK(goForwardCallback), (gpointer)window);
|
||||
+ gtk_tool_button_set_label(GTK_TOOL_BUTTON(item), "Forward");
|
||||
gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, -1);
|
||||
gtk_widget_show(GTK_WIDGET(item));
|
||||
|
||||
item = gtk_tool_button_new_from_stock(GTK_STOCK_PREFERENCES);
|
||||
g_signal_connect_swapped(G_OBJECT(item), "clicked", G_CALLBACK(settingsCallback), window);
|
||||
+ gtk_tool_button_set_label(GTK_TOOL_BUTTON(item), "Preferences");
|
||||
gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, -1);
|
||||
gtk_widget_show(GTK_WIDGET(item));
|
||||
|
||||
item = gtk_tool_button_new_from_stock(GTK_STOCK_ZOOM_OUT);
|
||||
window->zoomOutItem = GTK_WIDGET(item);
|
||||
g_signal_connect_swapped(item, "clicked", G_CALLBACK(zoomOutCallback), window);
|
||||
+ gtk_tool_button_set_label(GTK_TOOL_BUTTON(item), "Zoom Out");
|
||||
gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, -1);
|
||||
gtk_widget_show(GTK_WIDGET(item));
|
||||
|
||||
item = gtk_tool_button_new_from_stock(GTK_STOCK_ZOOM_IN);
|
||||
window->zoomInItem = GTK_WIDGET(item);
|
||||
g_signal_connect_swapped(item, "clicked", G_CALLBACK(zoomInCallback), window);
|
||||
+ gtk_tool_button_set_label(GTK_TOOL_BUTTON(item), "Zoom In");
|
||||
gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, -1);
|
||||
gtk_widget_show(GTK_WIDGET(item));
|
||||
|
||||
item = gtk_tool_button_new_from_stock(GTK_STOCK_FIND);
|
||||
g_signal_connect_swapped(item, "clicked", G_CALLBACK(searchCallback), window);
|
||||
+ gtk_tool_button_set_label(GTK_TOOL_BUTTON(item), "Find");
|
||||
gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, -1);
|
||||
gtk_widget_add_accelerator(GTK_WIDGET(item), "clicked", window->accelGroup, GDK_KEY_F, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);
|
||||
gtk_widget_show(GTK_WIDGET(item));
|
||||
|
||||
item = gtk_tool_button_new_from_stock(GTK_STOCK_HOME);
|
||||
g_signal_connect_swapped(item, "clicked", G_CALLBACK(loadHomePage), window);
|
||||
+ gtk_tool_button_set_label(GTK_TOOL_BUTTON(item), "Home");
|
||||
gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, -1);
|
||||
gtk_widget_add_accelerator(GTK_WIDGET(item), "clicked", window->accelGroup, GDK_KEY_Home, GDK_MOD1_MASK, GTK_ACCEL_VISIBLE);
|
||||
gtk_widget_show(GTK_WIDGET(item));
|
||||
|
||||
item = gtk_tool_button_new(gtk_image_new_from_icon_name("tab-new", GTK_ICON_SIZE_SMALL_TOOLBAR), NULL);
|
||||
g_signal_connect_swapped(item, "clicked", G_CALLBACK(newTabCallback), window);
|
||||
+ gtk_tool_button_set_label(GTK_TOOL_BUTTON(item), "New Tab");
|
||||
gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, -1);
|
||||
gtk_widget_add_accelerator(GTK_WIDGET(item), "clicked", window->accelGroup, GDK_KEY_T, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE);
|
||||
gtk_widget_show_all(GTK_WIDGET(item));
|
||||
@@ -1031,6 +1056,7 @@ static void browser_window_init(BrowserWindow *window)
|
||||
item = gtk_tool_button_new_from_stock(GTK_STOCK_REFRESH);
|
||||
window->reloadOrStopButton = GTK_WIDGET(item);
|
||||
g_signal_connect_swapped(item, "clicked", G_CALLBACK(reloadOrStopCallback), window);
|
||||
+ gtk_tool_button_set_label(GTK_TOOL_BUTTON(item), "Reload");
|
||||
gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, -1);
|
||||
gtk_widget_add_accelerator(window->reloadOrStopButton, "clicked", window->accelGroup, GDK_KEY_F5, 0, GTK_ACCEL_VISIBLE);
|
||||
gtk_widget_show(window->reloadOrStopButton);
|
|
@ -0,0 +1,513 @@
|
|||
diff -up webkitgtk-2.20.2/Source/cmake/FindWebP.cmake.no_webp_demux webkitgtk-2.20.2/Source/cmake/FindWebP.cmake
|
||||
--- webkitgtk-2.20.2/Source/cmake/FindWebP.cmake.no_webp_demux 2018-02-19 08:45:33.000000000 +0100
|
||||
+++ webkitgtk-2.20.2/Source/cmake/FindWebP.cmake 2018-05-11 08:36:41.026235222 +0200
|
||||
@@ -33,34 +33,20 @@ find_package(PkgConfig)
|
||||
pkg_check_modules(PC_WEBP QUIET libwebp)
|
||||
|
||||
# Look for the header file.
|
||||
-find_path(WEBP_INCLUDE_DIR
|
||||
+find_path(WEBP_INCLUDE_DIRS
|
||||
NAMES webp/decode.h
|
||||
HINTS ${PC_WEBP_INCLUDEDIR} ${PC_WEBP_INCLUDE_DIRS}
|
||||
)
|
||||
-list(APPEND WEBP_INCLUDE_DIRS ${WEBP_INCLUDE_DIR})
|
||||
mark_as_advanced(WEBP_INCLUDE_DIRS)
|
||||
|
||||
# Look for the library.
|
||||
find_library(
|
||||
- WEBP_LIBRARY
|
||||
+ WEBP_LIBRARIES
|
||||
NAMES webp
|
||||
HINTS ${PC_WEBP_LIBDIR} ${PC_WEBP_LIBRARY_DIRS}
|
||||
)
|
||||
-list(APPEND WEBP_LIBRARIES ${WEBP_LIBRARY})
|
||||
mark_as_advanced(WEBP_LIBRARIES)
|
||||
|
||||
-find_path(WEBP_DEMUX_INCLUDE_DIR
|
||||
- NAMES webp/demux.h
|
||||
- HINTS ${PC_WEBP_INCLUDEDIR} ${PC_WEBP_INCLUDE_DIRS}
|
||||
-)
|
||||
-list(APPEND WEBP_INCLUDE_DIRS ${WEBP_DEMUX_INCLUDE_DIR})
|
||||
-
|
||||
-find_library(WEBP_DEMUX_LIBRARY
|
||||
- NAMES webpdemux
|
||||
- HINTS ${PC_WEBP_LIBDIR} ${PC_WEBP_LIBRARY_DIRS}
|
||||
-)
|
||||
-list(APPEND WEBP_LIBRARIES ${WEBP_DEMUX_LIBRARY})
|
||||
-
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(WebP REQUIRED_VARS WEBP_INCLUDE_DIRS WEBP_LIBRARIES
|
||||
FOUND_VAR WEBP_FOUND)
|
||||
diff -up webkitgtk-2.20.2/Source/WebCore/platform/graphics/ImageBackingStore.h.no_webp_demux webkitgtk-2.20.2/Source/WebCore/platform/graphics/ImageBackingStore.h
|
||||
--- webkitgtk-2.20.2/Source/WebCore/platform/graphics/ImageBackingStore.h.no_webp_demux 2018-02-19 08:45:32.000000000 +0100
|
||||
+++ webkitgtk-2.20.2/Source/WebCore/platform/graphics/ImageBackingStore.h 2018-05-11 08:36:41.027235218 +0200
|
||||
@@ -147,6 +147,7 @@ public:
|
||||
setPixel(pixelAt(x, y), r, g, b, a);
|
||||
}
|
||||
|
||||
+#if ENABLE(APNG)
|
||||
void blendPixel(RGBA32* dest, unsigned r, unsigned g, unsigned b, unsigned a)
|
||||
{
|
||||
if (!a)
|
||||
@@ -172,6 +173,7 @@ public:
|
||||
else
|
||||
*dest = makeUnPremultipliedRGBA(r, g, b, a);
|
||||
}
|
||||
+#endif
|
||||
|
||||
static bool isOverSize(const IntSize& size)
|
||||
{
|
||||
diff -up webkitgtk-2.20.2/Source/WebCore/platform/image-decoders/webp/WEBPImageDecoder.cpp.no_webp_demux webkitgtk-2.20.2/Source/WebCore/platform/image-decoders/webp/WEBPImageDecoder.cpp
|
||||
--- webkitgtk-2.20.2/Source/WebCore/platform/image-decoders/webp/WEBPImageDecoder.cpp.no_webp_demux 2018-02-19 08:45:32.000000000 +0100
|
||||
+++ webkitgtk-2.20.2/Source/WebCore/platform/image-decoders/webp/WEBPImageDecoder.cpp 2018-05-11 09:19:25.756550925 +0200
|
||||
@@ -31,49 +31,47 @@
|
||||
|
||||
#if USE(WEBP)
|
||||
|
||||
-namespace WebCore {
|
||||
+// Backward emulation for earlier versions than 0.1.99.
|
||||
+#if (WEBP_DECODER_ABI_VERSION < 0x0163)
|
||||
+#define MODE_rgbA MODE_RGBA
|
||||
+#define MODE_bgrA MODE_BGRA
|
||||
+#endif
|
||||
+
|
||||
+#if CPU(BIG_ENDIAN) || CPU(MIDDLE_ENDIAN)
|
||||
+inline WEBP_CSP_MODE outputMode(bool hasAlpha) { return hasAlpha ? MODE_rgbA : MODE_RGBA; }
|
||||
+#else // LITTLE_ENDIAN, output BGRA pixels.
|
||||
+inline WEBP_CSP_MODE outputMode(bool hasAlpha) { return hasAlpha ? MODE_bgrA : MODE_BGRA; }
|
||||
+#endif
|
||||
|
||||
-// Convenience function to improve code readability, as WebPDemuxGetFrame is +1 based.
|
||||
-bool webpFrameAtIndex(WebPDemuxer* demuxer, size_t index, WebPIterator* webpFrame)
|
||||
-{
|
||||
- return WebPDemuxGetFrame(demuxer, index + 1, webpFrame);
|
||||
-}
|
||||
+namespace WebCore {
|
||||
|
||||
WEBPImageDecoder::WEBPImageDecoder(AlphaOption alphaOption, GammaAndColorProfileOption gammaAndColorProfileOption)
|
||||
: ScalableImageDecoder(alphaOption, gammaAndColorProfileOption)
|
||||
+ , m_decoder(0)
|
||||
+ , m_hasAlpha(false)
|
||||
{
|
||||
}
|
||||
|
||||
-WEBPImageDecoder::~WEBPImageDecoder() = default;
|
||||
-
|
||||
-void WEBPImageDecoder::setData(SharedBuffer& data, bool allDataReceived)
|
||||
+WEBPImageDecoder::~WEBPImageDecoder()
|
||||
{
|
||||
- if (failed())
|
||||
- return;
|
||||
-
|
||||
- // We need to ensure that the header is parsed everytime new data arrives, as the number
|
||||
- // of frames may change until we have the complete data. If the size has not been obtained
|
||||
- // yet, the call to ScalableImageDecoder::setData() will call parseHeader() and set
|
||||
- // m_headerParsed to true, so the call to parseHeader() at the end won't do anything. If the size
|
||||
- // is available, then parseHeader() is only called once.
|
||||
- m_headerParsed = false;
|
||||
- ScalableImageDecoder::setData(data, allDataReceived);
|
||||
- parseHeader();
|
||||
+ clear();
|
||||
}
|
||||
|
||||
-RepetitionCount WEBPImageDecoder::repetitionCount() const
|
||||
+void WEBPImageDecoder::clear()
|
||||
{
|
||||
- if (failed())
|
||||
- return RepetitionCountOnce;
|
||||
-
|
||||
- return m_repetitionCount ? m_repetitionCount : RepetitionCountInfinite;
|
||||
+ if (m_decoder)
|
||||
+ WebPIDelete(m_decoder);
|
||||
+ m_decoder = 0;
|
||||
}
|
||||
|
||||
ImageFrame* WEBPImageDecoder::frameBufferAtIndex(size_t index)
|
||||
{
|
||||
- if (index >= frameCount())
|
||||
+ if (index)
|
||||
return 0;
|
||||
|
||||
+ if (m_frameBufferCache.isEmpty())
|
||||
+ m_frameBufferCache.grow(1);
|
||||
+
|
||||
// The size of m_frameBufferCache may be smaller than the index requested. This can happen
|
||||
// because new data may have arrived with a bigger frameCount, but decode() hasn't been called
|
||||
// yet, which is the one that resizes the cache.
|
||||
@@ -85,275 +83,73 @@ ImageFrame* WEBPImageDecoder::frameBuffe
|
||||
return &m_frameBufferCache[index];
|
||||
}
|
||||
|
||||
-size_t WEBPImageDecoder::findFirstRequiredFrameToDecode(size_t frameIndex, WebPDemuxer* demuxer)
|
||||
-{
|
||||
- // The first frame doesn't depend on any other.
|
||||
- if (!frameIndex)
|
||||
- return 0;
|
||||
-
|
||||
- // Go backwards and find the first complete frame.
|
||||
- size_t firstIncompleteFrame = frameIndex;
|
||||
- for (; firstIncompleteFrame; --firstIncompleteFrame) {
|
||||
- if (m_frameBufferCache[firstIncompleteFrame - 1].isComplete())
|
||||
- break;
|
||||
- }
|
||||
-
|
||||
- // Check if there are any independent frames between firstIncompleteFrame and frameIndex.
|
||||
- for (size_t firstIndependentFrame = frameIndex; firstIndependentFrame > firstIncompleteFrame ; --firstIndependentFrame) {
|
||||
- WebPIterator webpFrame;
|
||||
- if (!webpFrameAtIndex(demuxer, firstIndependentFrame, &webpFrame))
|
||||
- continue;
|
||||
-
|
||||
- IntRect frameRect(webpFrame.x_offset, webpFrame.y_offset, webpFrame.width, webpFrame.height);
|
||||
- if (!frameRect.contains({ { }, size() }))
|
||||
- continue;
|
||||
-
|
||||
- // This frame covers the whole area and doesn't have alpha, so it can be rendered without
|
||||
- // dependencies.
|
||||
- if (!webpFrame.has_alpha)
|
||||
- return firstIndependentFrame;
|
||||
-
|
||||
- // This frame covers the whole area and its disposalMethod is RestoreToBackground, which means
|
||||
- // that the next frame will be rendered on top of a transparent background, and can be decoded
|
||||
- // without dependencies. This can only be checked for frames prior to frameIndex.
|
||||
- if (firstIndependentFrame < frameIndex && m_frameBufferCache[firstIndependentFrame].disposalMethod() == ImageFrame::DisposalMethod::RestoreToBackground)
|
||||
- return firstIndependentFrame + 1;
|
||||
- }
|
||||
-
|
||||
- return firstIncompleteFrame;
|
||||
-}
|
||||
-
|
||||
-void WEBPImageDecoder::decode(size_t frameIndex, bool allDataReceived)
|
||||
+bool WEBPImageDecoder::decode(bool onlySize, bool)
|
||||
{
|
||||
if (failed())
|
||||
- return;
|
||||
-
|
||||
- // This can be executed both in the main thread (when not using async decoding) or in the decoding thread.
|
||||
- // When executed in the decoding thread, a call to setData() from the main thread may change the data
|
||||
- // the WebPDemuxer is using, leaving it in an inconsistent state, so we need to protect the data.
|
||||
- RefPtr<SharedBuffer> protectedData(m_data);
|
||||
- WebPData inputData = { reinterpret_cast<const uint8_t*>(protectedData->data()), protectedData->size() };
|
||||
- WebPDemuxState demuxerState;
|
||||
- WebPDemuxer* demuxer = WebPDemuxPartial(&inputData, &demuxerState);
|
||||
- if (!demuxer) {
|
||||
- setFailed();
|
||||
- return;
|
||||
- }
|
||||
-
|
||||
- m_frameBufferCache.resize(m_frameCount);
|
||||
-
|
||||
- // It is a fatal error if all data is received and we have decoded all frames available but the file is truncated.
|
||||
- if (frameIndex >= m_frameBufferCache.size() - 1 && allDataReceived && demuxer && demuxerState != WEBP_DEMUX_DONE) {
|
||||
- WebPDemuxDelete(demuxer);
|
||||
- setFailed();
|
||||
- return;
|
||||
- }
|
||||
-
|
||||
- for (size_t i = findFirstRequiredFrameToDecode(frameIndex, demuxer); i <= frameIndex; i++)
|
||||
- decodeFrame(i, demuxer);
|
||||
+ return false;
|
||||
|
||||
- WebPDemuxDelete(demuxer);
|
||||
-}
|
||||
+ const uint8_t* dataBytes = reinterpret_cast<const uint8_t*>(m_data->data());
|
||||
+ const size_t dataSize = m_data->size();
|
||||
|
||||
-void WEBPImageDecoder::decodeFrame(size_t frameIndex, WebPDemuxer* demuxer)
|
||||
-{
|
||||
- if (failed())
|
||||
- return;
|
||||
+ if (ScalableImageDecoder::encodedDataStatus() < EncodedDataStatus::SizeAvailable) {
|
||||
+ static const size_t imageHeaderSize = 30;
|
||||
+ if (dataSize < imageHeaderSize)
|
||||
+ return false;
|
||||
+ int width, height;
|
||||
+#if (WEBP_DECODER_ABI_VERSION >= 0x0163)
|
||||
+ WebPBitstreamFeatures features;
|
||||
+ if (WebPGetFeatures(dataBytes, dataSize, &features) != VP8_STATUS_OK)
|
||||
+ return setFailed();
|
||||
+ width = features.width;
|
||||
+ height = features.height;
|
||||
+ m_hasAlpha = features.has_alpha;
|
||||
+#else
|
||||
+ // Earlier version won't be able to display WebP files with alpha.
|
||||
+ if (!WebPGetInfo(dataBytes, dataSize, &width, &height))
|
||||
+ return setFailed();
|
||||
+ m_hasAlpha = false;
|
||||
+#endif
|
||||
+ if (!setSize(IntSize(width, height)))
|
||||
+ return setFailed();
|
||||
+ }
|
||||
+
|
||||
+ ASSERT(ScalableImageDecoder::encodedDataStatus() >= EncodedDataStatus::SizeAvailable);
|
||||
+ if (onlySize)
|
||||
+ return true;
|
||||
|
||||
- WebPIterator webpFrame;
|
||||
- if (!webpFrameAtIndex(demuxer, frameIndex, &webpFrame))
|
||||
- return;
|
||||
-
|
||||
- const uint8_t* dataBytes = reinterpret_cast<const uint8_t*>(webpFrame.fragment.bytes);
|
||||
- size_t dataSize = webpFrame.fragment.size;
|
||||
- bool blend = webpFrame.blend_method == WEBP_MUX_BLEND ? true : false;
|
||||
-
|
||||
- ASSERT(m_frameBufferCache.size() > frameIndex);
|
||||
- ImageFrame& buffer = m_frameBufferCache[frameIndex];
|
||||
- buffer.setDuration(Seconds::fromMilliseconds(webpFrame.duration));
|
||||
- buffer.setDisposalMethod(webpFrame.dispose_method == WEBP_MUX_DISPOSE_BACKGROUND ? ImageFrame::DisposalMethod::RestoreToBackground : ImageFrame::DisposalMethod::DoNotDispose);
|
||||
+ ASSERT(!m_frameBufferCache.isEmpty());
|
||||
+ ImageFrame& buffer = m_frameBufferCache[0];
|
||||
ASSERT(!buffer.isComplete());
|
||||
|
||||
- if (buffer.isInvalid() && !initFrameBuffer(frameIndex, &webpFrame)) {
|
||||
- setFailed();
|
||||
- return;
|
||||
- }
|
||||
-
|
||||
- WebPDecBuffer decoderBuffer;
|
||||
- WebPInitDecBuffer(&decoderBuffer);
|
||||
- decoderBuffer.colorspace = MODE_RGBA;
|
||||
- decoderBuffer.u.RGBA.stride = webpFrame.width * sizeof(RGBA32);
|
||||
- decoderBuffer.u.RGBA.size = decoderBuffer.u.RGBA.stride * webpFrame.height;
|
||||
- decoderBuffer.is_external_memory = 1;
|
||||
- std::unique_ptr<unsigned char[]> p(new uint8_t[decoderBuffer.u.RGBA.size]());
|
||||
- decoderBuffer.u.RGBA.rgba = p.get();
|
||||
- if (!decoderBuffer.u.RGBA.rgba) {
|
||||
- setFailed();
|
||||
- return;
|
||||
- }
|
||||
-
|
||||
- WebPIDecoder* decoder = WebPINewDecoder(&decoderBuffer);
|
||||
- if (!decoder) {
|
||||
- setFailed();
|
||||
- return;
|
||||
+ if (buffer.isInvalid()) {
|
||||
+ if (!buffer.initialize(size(), m_premultiplyAlpha))
|
||||
+ return setFailed();
|
||||
+ buffer.setDecodingStatus(DecodingStatus::Partial);
|
||||
+ buffer.setHasAlpha(m_hasAlpha);
|
||||
+ }
|
||||
+
|
||||
+ if (!m_decoder) {
|
||||
+ WEBP_CSP_MODE mode = outputMode(m_hasAlpha);
|
||||
+ if (!m_premultiplyAlpha)
|
||||
+ mode = outputMode(false);
|
||||
+ int rowStride = size().width() * sizeof(RGBA32);
|
||||
+ uint8_t* output = reinterpret_cast<uint8_t*>(buffer.backingStore()->pixelAt(0, 0));
|
||||
+ int outputSize = size().height() * rowStride;
|
||||
+ m_decoder = WebPINewRGB(mode, output, outputSize, rowStride);
|
||||
+ if (!m_decoder)
|
||||
+ return setFailed();
|
||||
}
|
||||
|
||||
- switch (WebPIUpdate(decoder, dataBytes, dataSize)) {
|
||||
+ switch (WebPIUpdate(m_decoder, dataBytes, dataSize)) {
|
||||
case VP8_STATUS_OK:
|
||||
- applyPostProcessing(frameIndex, decoder, decoderBuffer, blend);
|
||||
buffer.setDecodingStatus(DecodingStatus::Complete);
|
||||
- break;
|
||||
+ clear();
|
||||
+ return true;
|
||||
case VP8_STATUS_SUSPENDED:
|
||||
- if (!isAllDataReceived()) {
|
||||
- applyPostProcessing(frameIndex, decoder, decoderBuffer, blend);
|
||||
- buffer.setDecodingStatus(DecodingStatus::Partial);
|
||||
- break;
|
||||
- }
|
||||
- // Fallthrough.
|
||||
- default:
|
||||
- setFailed();
|
||||
- }
|
||||
-
|
||||
- WebPIDelete(decoder);
|
||||
-}
|
||||
-
|
||||
-bool WEBPImageDecoder::initFrameBuffer(size_t frameIndex, const WebPIterator* webpFrame)
|
||||
-{
|
||||
- if (frameIndex >= frameCount())
|
||||
return false;
|
||||
-
|
||||
- ImageFrame& buffer = m_frameBufferCache[frameIndex];
|
||||
-
|
||||
- // Initialize the frame rect in our buffer.
|
||||
- IntRect frameRect(webpFrame->x_offset, webpFrame->y_offset, webpFrame->width, webpFrame->height);
|
||||
-
|
||||
- // Make sure the frameRect doesn't extend outside the buffer.
|
||||
- frameRect.intersect({ { }, size() });
|
||||
-
|
||||
- if (!frameIndex || !m_frameBufferCache[frameIndex - 1].backingStore()) {
|
||||
- // This frame doesn't rely on any previous data.
|
||||
- if (!buffer.initialize(size(), m_premultiplyAlpha))
|
||||
- return false;
|
||||
- } else {
|
||||
- const ImageFrame& prevBuffer = m_frameBufferCache[frameIndex - 1];
|
||||
- ASSERT(prevBuffer.isComplete());
|
||||
-
|
||||
- // Preserve the last frame as the starting state for this frame.
|
||||
- if (!prevBuffer.backingStore() || !buffer.initialize(*prevBuffer.backingStore()))
|
||||
- return false;
|
||||
-
|
||||
- if (prevBuffer.disposalMethod() == ImageFrame::DisposalMethod::RestoreToBackground) {
|
||||
- // We want to clear the previous frame to transparent, without
|
||||
- // affecting pixels in the image outside of the frame.
|
||||
- const IntRect& prevRect = prevBuffer.backingStore()->frameRect();
|
||||
- buffer.backingStore()->clearRect(prevRect);
|
||||
- }
|
||||
- }
|
||||
-
|
||||
- buffer.setHasAlpha(webpFrame->has_alpha);
|
||||
- buffer.backingStore()->setFrameRect(frameRect);
|
||||
-
|
||||
- return true;
|
||||
-}
|
||||
-
|
||||
-void WEBPImageDecoder::applyPostProcessing(size_t frameIndex, WebPIDecoder* decoder, WebPDecBuffer& decoderBuffer, bool blend)
|
||||
-{
|
||||
- ImageFrame& buffer = m_frameBufferCache[frameIndex];
|
||||
- int decodedWidth = 0;
|
||||
- int decodedHeight = 0;
|
||||
- if (!WebPIDecGetRGB(decoder, &decodedHeight, &decodedWidth, 0, 0))
|
||||
- return; // See also https://bugs.webkit.org/show_bug.cgi?id=74062
|
||||
- if (decodedHeight <= 0)
|
||||
- return;
|
||||
-
|
||||
- const IntRect& frameRect = buffer.backingStore()->frameRect();
|
||||
- ASSERT_WITH_SECURITY_IMPLICATION(decodedWidth == frameRect.width());
|
||||
- ASSERT_WITH_SECURITY_IMPLICATION(decodedHeight <= frameRect.height());
|
||||
- const int left = frameRect.x();
|
||||
- const int top = frameRect.y();
|
||||
-
|
||||
- for (int y = 0; y < decodedHeight; y++) {
|
||||
- const int canvasY = top + y;
|
||||
- for (int x = 0; x < decodedWidth; x++) {
|
||||
- const int canvasX = left + x;
|
||||
- RGBA32* address = buffer.backingStore()->pixelAt(canvasX, canvasY);
|
||||
- uint8_t* pixel = decoderBuffer.u.RGBA.rgba + (y * frameRect.width() + x) * sizeof(RGBA32);
|
||||
- if (blend && (pixel[3] < 255))
|
||||
- buffer.backingStore()->blendPixel(address, pixel[0], pixel[1], pixel[2], pixel[3]);
|
||||
- else
|
||||
- buffer.backingStore()->setPixel(address, pixel[0], pixel[1], pixel[2], pixel[3]);
|
||||
- }
|
||||
- }
|
||||
-}
|
||||
-
|
||||
-void WEBPImageDecoder::parseHeader()
|
||||
-{
|
||||
- if (m_headerParsed)
|
||||
- return;
|
||||
-
|
||||
- m_headerParsed = true;
|
||||
-
|
||||
- const unsigned webpHeaderSize = 30; // RIFF_HEADER_SIZE + CHUNK_HEADER_SIZE + VP8_FRAME_HEADER_SIZE
|
||||
- if (m_data->size() < webpHeaderSize)
|
||||
- return; // Await VP8X header so WebPDemuxPartial succeeds.
|
||||
-
|
||||
- WebPData inputData = { reinterpret_cast<const uint8_t*>(m_data->data()), m_data->size() };
|
||||
- WebPDemuxState demuxerState;
|
||||
- WebPDemuxer* demuxer = WebPDemuxPartial(&inputData, &demuxerState);
|
||||
- if (!demuxer) {
|
||||
- setFailed();
|
||||
- return;
|
||||
- }
|
||||
-
|
||||
- m_frameCount = WebPDemuxGetI(demuxer, WEBP_FF_FRAME_COUNT);
|
||||
- if (!m_frameCount) {
|
||||
- WebPDemuxDelete(demuxer);
|
||||
- return; // Wait until the encoded image frame data arrives.
|
||||
- }
|
||||
-
|
||||
- int width = WebPDemuxGetI(demuxer, WEBP_FF_CANVAS_WIDTH);
|
||||
- int height = WebPDemuxGetI(demuxer, WEBP_FF_CANVAS_HEIGHT);
|
||||
- if (!isSizeAvailable() && !setSize(IntSize(width, height))) {
|
||||
- WebPDemuxDelete(demuxer);
|
||||
- return;
|
||||
- }
|
||||
-
|
||||
- m_formatFlags = WebPDemuxGetI(demuxer, WEBP_FF_FORMAT_FLAGS);
|
||||
- if (!(m_formatFlags & ANIMATION_FLAG))
|
||||
- m_repetitionCount = WebCore::RepetitionCountNone;
|
||||
- else {
|
||||
- // Since we have parsed at least one frame, even if partially,
|
||||
- // the global animation (ANIM) properties have been read since
|
||||
- // an ANIM chunk must precede the ANMF frame chunks.
|
||||
- m_repetitionCount = WebPDemuxGetI(demuxer, WEBP_FF_LOOP_COUNT);
|
||||
- ASSERT(m_repetitionCount == (m_repetitionCount & 0xffff)); // Loop count is always <= 16 bits.
|
||||
- if (!m_repetitionCount)
|
||||
- m_repetitionCount = WebCore::RepetitionCountInfinite;
|
||||
- }
|
||||
-
|
||||
- WebPDemuxDelete(demuxer);
|
||||
-}
|
||||
-
|
||||
-void WEBPImageDecoder::clearFrameBufferCache(size_t clearBeforeFrame)
|
||||
-{
|
||||
- if (m_frameBufferCache.isEmpty())
|
||||
- return;
|
||||
-
|
||||
- // We don't want to delete the last frame in the cache, as is may be needed for
|
||||
- // decoding when new data arrives. See GIFImageDecoder for the full explanation.
|
||||
- clearBeforeFrame = std::min(clearBeforeFrame, m_frameBufferCache.size() - 1);
|
||||
-
|
||||
- // Also from GIFImageDecoder: We need to preserve frames such that:
|
||||
- // * We don't clear |clearBeforeFrame|.
|
||||
- // * We don't clear the frame we're currently decoding.
|
||||
- // * We don't clear any frame from which a future initFrameBuffer() call will copy bitmap data.
|
||||
- //
|
||||
- // In WEBP every frame depends on the previous one or none. That means that frames after clearBeforeFrame
|
||||
- // won't need any frame before them to render, so we can clear them all.
|
||||
- for (int i = clearBeforeFrame - 1; i >= 0; i--) {
|
||||
- ImageFrame& buffer = m_frameBufferCache[i];
|
||||
- if (!buffer.isInvalid())
|
||||
- buffer.clear();
|
||||
+ default:
|
||||
+ clear();
|
||||
+ return setFailed();
|
||||
}
|
||||
}
|
||||
|
||||
diff -up webkitgtk-2.20.2/Source/WebCore/platform/image-decoders/webp/WEBPImageDecoder.h.no_webp_demux webkitgtk-2.20.2/Source/WebCore/platform/image-decoders/webp/WEBPImageDecoder.h
|
||||
--- webkitgtk-2.20.2/Source/WebCore/platform/image-decoders/webp/WEBPImageDecoder.h.no_webp_demux 2018-02-19 08:45:32.000000000 +0100
|
||||
+++ webkitgtk-2.20.2/Source/WebCore/platform/image-decoders/webp/WEBPImageDecoder.h 2018-05-11 08:36:41.029235210 +0200
|
||||
@@ -33,7 +33,6 @@
|
||||
#if USE(WEBP)
|
||||
|
||||
#include "webp/decode.h"
|
||||
-#include "webp/demux.h"
|
||||
|
||||
namespace WebCore {
|
||||
|
||||
@@ -47,26 +46,19 @@ public:
|
||||
virtual ~WEBPImageDecoder();
|
||||
|
||||
String filenameExtension() const override { return ASCIILiteral("webp"); }
|
||||
- void setData(SharedBuffer&, bool) final;
|
||||
ImageFrame* frameBufferAtIndex(size_t index) override;
|
||||
- RepetitionCount repetitionCount() const override;
|
||||
- size_t frameCount() const override { return m_frameCount; }
|
||||
- void clearFrameBufferCache(size_t) override;
|
||||
|
||||
private:
|
||||
WEBPImageDecoder(AlphaOption, GammaAndColorProfileOption);
|
||||
- void tryDecodeSize(bool) override { parseHeader(); }
|
||||
- void decode(size_t, bool);
|
||||
- void decodeFrame(size_t, WebPDemuxer*);
|
||||
- void parseHeader();
|
||||
- bool initFrameBuffer(size_t, const WebPIterator*);
|
||||
- void applyPostProcessing(size_t, WebPIDecoder*, WebPDecBuffer&, bool);
|
||||
- size_t findFirstRequiredFrameToDecode(size_t, WebPDemuxer*);
|
||||
-
|
||||
- int m_repetitionCount { 0 };
|
||||
- size_t m_frameCount { 0 };
|
||||
- int m_formatFlags { 0 };
|
||||
- bool m_headerParsed { false };
|
||||
+ void tryDecodeSize(bool allDataReceived) override { decode(true, allDataReceived); }
|
||||
+
|
||||
+ bool decode(bool onlySize, bool allDataReceived);
|
||||
+
|
||||
+ WebPIDecoder* m_decoder;
|
||||
+ bool m_hasAlpha;
|
||||
+
|
||||
+ void applyColorProfile(const uint8_t*, size_t, ImageFrame&) { };
|
||||
+ void clear();
|
||||
};
|
||||
|
||||
} // namespace WebCore
|
|
@ -0,0 +1,17 @@
|
|||
diff --git a/Source/JavaScriptCore/heap/MarkedBlock.h b/Source/JavaScriptCore/heap/MarkedBlock.h
|
||||
index 7d14eecfd8d..95ea41c04dd 100644
|
||||
--- a/Source/JavaScriptCore/heap/MarkedBlock.h
|
||||
+++ b/Source/JavaScriptCore/heap/MarkedBlock.h
|
||||
@@ -66,7 +66,12 @@ private:
|
||||
friend class Handle;
|
||||
public:
|
||||
static constexpr size_t atomSize = 16; // bytes
|
||||
+
|
||||
+#if CPU(PPC64) || CPU(PPC64LE) || CPU(PPC) || CPU(ARM64) || CPU(UNKNOWN)
|
||||
+ static constexpr size_t blockSize = 64 * KB;
|
||||
+#else
|
||||
static constexpr size_t blockSize = 16 * KB;
|
||||
+#endif
|
||||
static constexpr size_t blockMask = ~(blockSize - 1); // blockSize must be a power of two.
|
||||
|
||||
static constexpr size_t atomsPerBlock = blockSize / atomSize;
|
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,111 @@
|
|||
From aacbb7501a1c9b16a73211a8a67ff5b028e92988 Mon Sep 17 00:00:00 2001
|
||||
From: "mcatanzaro@igalia.com"
|
||||
<mcatanzaro@igalia.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
|
||||
Date: Tue, 14 Nov 2017 00:42:20 +0000
|
||||
Subject: [PATCH] [GTK] Require woff2 1.0.2 and drop direct brotli dependency
|
||||
https://bugs.webkit.org/show_bug.cgi?id=179630
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Reviewed by Frédéric Wang.
|
||||
|
||||
.:
|
||||
|
||||
* Source/cmake/FindBrotliDec.cmake: Removed.
|
||||
* Source/cmake/OptionsGTK.cmake:
|
||||
|
||||
Tools:
|
||||
|
||||
* gtk/jhbuild.modules:
|
||||
|
||||
|
||||
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@224793 268f45cc-cd09-0410-ab3c-d52691b4dbfc
|
||||
---
|
||||
ChangeLog | 10 ++++++++
|
||||
Source/cmake/FindBrotliDec.cmake | 53 ----------------------------------------
|
||||
Source/cmake/OptionsGTK.cmake | 6 +----
|
||||
Tools/ChangeLog | 9 +++++++
|
||||
Tools/gtk/jhbuild.modules | 2 +-
|
||||
5 files changed, 21 insertions(+), 59 deletions(-)
|
||||
delete mode 100644 Source/cmake/FindBrotliDec.cmake
|
||||
|
||||
diff --git a/Source/cmake/FindBrotliDec.cmake b/Source/cmake/FindBrotliDec.cmake
|
||||
deleted file mode 100644
|
||||
index 3a8cf90357f..00000000000
|
||||
--- a/Source/cmake/FindBrotliDec.cmake
|
||||
+++ /dev/null
|
||||
@@ -1,53 +0,0 @@
|
||||
-# - Try to find BrotliDec.
|
||||
-# Once done, this will define
|
||||
-#
|
||||
-# BROTLIDEC_FOUND - system has BrotliDec.
|
||||
-# BROTLIDEC_INCLUDE_DIRS - the BrotliDec include directories
|
||||
-# BROTLIDEC_LIBRARIES - link these to use BrotliDec.
|
||||
-#
|
||||
-# Copyright (C) 2017 Igalia S.L.
|
||||
-#
|
||||
-# Redistribution and use in source and binary forms, with or without
|
||||
-# modification, are permitted provided that the following conditions
|
||||
-# are met:
|
||||
-# 1. Redistributions of source code must retain the above copyright
|
||||
-# notice, this list of conditions and the following disclaimer.
|
||||
-# 2. Redistributions in binary form must reproduce the above copyright
|
||||
-# notice, this list of conditions and the following disclaimer in the
|
||||
-# documentation and/or other materials provided with the distribution.
|
||||
-#
|
||||
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND ITS CONTRIBUTORS ``AS
|
||||
-# IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
-# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
-# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR ITS
|
||||
-# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
-# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
-# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
-# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
-# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
||||
-# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
-# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
-
|
||||
-find_package(PkgConfig)
|
||||
-pkg_check_modules(PC_BROTLIDEC libbrotlidec)
|
||||
-
|
||||
-find_path(BROTLIDEC_INCLUDE_DIRS
|
||||
- NAMES brotli/decode.h
|
||||
- HINTS ${PC_BROTLIDEC_INCLUDEDIR}
|
||||
-)
|
||||
-
|
||||
-find_library(BROTLIDEC_LIBRARIES
|
||||
- NAMES brotlidec
|
||||
- HINTS ${PC_BROTLIDEC_LIBDIR}
|
||||
-)
|
||||
-
|
||||
-include(FindPackageHandleStandardArgs)
|
||||
-find_package_handle_standard_args(BrotliDec
|
||||
- REQUIRED_VARS BROTLIDEC_INCLUDE_DIRS BROTLIDEC_LIBRARIES
|
||||
- FOUND_VAR BROTLIDEC_FOUND
|
||||
- VERSION_VAR PC_BROTLIDEC_VERSION)
|
||||
-
|
||||
-mark_as_advanced(
|
||||
- BROTLIDEC_INCLUDE_DIRS
|
||||
- BROTLIDEC_LIBRARIES
|
||||
-)
|
||||
diff --git a/Source/cmake/OptionsGTK.cmake b/Source/cmake/OptionsGTK.cmake
|
||||
index ba7e134c7cc..39c3a9be47e 100644
|
||||
--- a/Source/cmake/OptionsGTK.cmake
|
||||
+++ b/Source/cmake/OptionsGTK.cmake
|
||||
@@ -365,11 +365,7 @@ if (USE_UPOWER)
|
||||
endif ()
|
||||
|
||||
if (USE_WOFF2)
|
||||
- find_package(BrotliDec 1.0.1)
|
||||
- if (NOT BROTLIDEC_FOUND)
|
||||
- message(FATAL_ERROR "libbrotlidec is needed for USE_WOFF2.")
|
||||
- endif ()
|
||||
- find_package(WOFF2Dec 1.0.1)
|
||||
+ find_package(WOFF2Dec 1.0.2)
|
||||
if (NOT WOFF2DEC_FOUND)
|
||||
message(FATAL_ERROR "libwoff2dec is needed for USE_WOFF2.")
|
||||
endif ()
|
||||
--
|
||||
2.16.2
|
||||
|
|
@ -0,0 +1,618 @@
|
|||
## NOTE: Lots of files in various subdirectories have the same name (such as
|
||||
## "LICENSE") so this short macro allows us to distinguish them by using their
|
||||
## directory names (from the source tree) as prefixes for the files.
|
||||
%global add_to_license_files() \
|
||||
mkdir -p _license_files ; \
|
||||
cp -p %1 _license_files/$(echo '%1' | sed -e 's!/!.!g')
|
||||
|
||||
# Bundle ICU 57 - see https://bugzilla.redhat.com/show_bug.cgi?id=1414413
|
||||
%define bundle_icu 1
|
||||
%if 0%{?bundle_icu}
|
||||
# Filter out provides/requires for private libraries
|
||||
%global __provides_exclude %{?__provides_exclude:%__provides_exclude|}libicu.*
|
||||
%global __requires_exclude %{?__requires_exclude:%__requires_exclude|}libicu.*
|
||||
%global __provides_exclude_from ^%{_libdir}/webkit2gtk-4\\.0/.*\\.so$
|
||||
%endif
|
||||
|
||||
# Increase the DIE limit so our debuginfo packages could be size optimized.
|
||||
# Fedora bug - https://bugzilla.redhat.com/show_bug.cgi?id=1456261
|
||||
%global _dwz_max_die_limit 250000000
|
||||
# The _dwz_max_die_limit is being overridden by the arch specific ones from the
|
||||
# redhat-rpm-config so we need to set the arch specific ones as well - now it
|
||||
# is only needed for x86_64.
|
||||
%global _dwz_max_die_limit_x86_64 250000000
|
||||
|
||||
# As we are using the DTS we have to build this package as:
|
||||
# rhpkg build --target rhel-7.6-devtoolset-7-candidate
|
||||
|
||||
Name: webkitgtk4
|
||||
Version: 2.20.5
|
||||
Release: 1%{?dist}
|
||||
Summary: GTK+ Web content engine library
|
||||
|
||||
License: LGPLv2
|
||||
URL: http://www.webkitgtk.org
|
||||
Source0: http://webkitgtk.org/releases/webkitgtk-%{version}.tar.xz
|
||||
%if 0%{?bundle_icu}
|
||||
Source1: http://download.icu-project.org/files/icu4c/57.1/icu4c-57_1-src.tgz
|
||||
%endif
|
||||
|
||||
|
||||
# https://bugs.webkit.org/show_bug.cgi?id=132333
|
||||
Patch0: webkit-cloop_big_endians.patch
|
||||
# Silly workaround for
|
||||
# https://bugs.webkit.org/show_bug.cgi?id=182923
|
||||
Patch1: webkit-page_size.patch
|
||||
# Revert woff2 and brotli removal to bundle them again, as they are not
|
||||
# included in RHEL 7
|
||||
# https://bugs.webkit.org/show_bug.cgi?id=179630
|
||||
Patch2: webkit-woff2_1.0.2.patch
|
||||
# https://trac.webkit.org/changeset/224329
|
||||
Patch3: webkit-library_typos.patch
|
||||
# https://bugs.webkit.org/show_bug.cgi?id=177862
|
||||
Patch4: webkit-remove_woff2.patch
|
||||
# https://bugs.webkit.org/show_bug.cgi?id=177804
|
||||
Patch5: webkit-remove_brotli.patch
|
||||
# We don't have new enough version of libgcrypt to support Subtle Crypto, lower
|
||||
# the version in the check so configure can pass and also disable Subtle Crypto
|
||||
# through cmake argument.
|
||||
Patch6: webkit-lower_libgcrypt_version.patch
|
||||
# We don't have new enough version of libwebp (that has demux) to support the
|
||||
# animated WebP images - revert the change that introduced it.
|
||||
Patch7: webkit-no_webp_demux.patch
|
||||
Patch8: webkit-memset_zero_length.patch
|
||||
Patch9: webkit-covscan_already_fixed.patch
|
||||
Patch10: webkit-covscan_uninit_ctor.patch
|
||||
Patch11: webkit-covscan_uninit.patch
|
||||
# https://bugs.webkit.org/show_bug.cgi?id=186756
|
||||
Patch12: webkit-covscan_1.patch
|
||||
# https://bugs.webkit.org/show_bug.cgi?id=186757
|
||||
Patch13: webkit-covscan_2.patch
|
||||
Patch14: webkit-covscan_3.patch
|
||||
# https://bugs.webkit.org/show_bug.cgi?id=186758
|
||||
Patch15: webkit-covscan_va_close.patch
|
||||
# https://bugs.webkit.org/show_bug.cgi?id=186763
|
||||
Patch16: webkit-covscan_bmalloc.patch
|
||||
# https://bugs.webkit.org/show_bug.cgi?id=186800
|
||||
Patch17: webkit-covscan_wtf.patch
|
||||
# https://bugs.webkit.org/show_bug.cgi?id=187087
|
||||
Patch18: webkit-covscan_gstreamer.patch
|
||||
# For QA tests
|
||||
Patch19: webkit-minibrowser-labels.patch
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1591638
|
||||
Patch20: webkit-atk_crash.patch
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1503624
|
||||
Patch21: webkit-atk_continuation_crash.patch
|
||||
|
||||
|
||||
%if 0%{?bundle_icu}
|
||||
Patch50: icu-8198.revert.icu5431.patch
|
||||
Patch51: icu-8800.freeserif.crash.patch
|
||||
Patch52: icu-7601.Indic-ccmp.patch
|
||||
Patch53: icu-gennorm2-man.patch
|
||||
Patch54: icu-icuinfo-man.patch
|
||||
Patch55: icu-armv7hl-disable-tests.patch
|
||||
Patch56: icu-rhbz1360340-icu-changeset-39109.patch
|
||||
Patch57: icu-diff-icu_trunk_source_common_locid.cpp-from-39282-to-39384.patch
|
||||
Patch58: icu-dont_use_clang_even_if_installed.patch
|
||||
# CVE-2017-7867 CVE-2017-7868
|
||||
Patch59: icu-rhbz1444101-icu-changeset-39671.patch
|
||||
%endif
|
||||
|
||||
BuildRequires: at-spi2-core-devel
|
||||
BuildRequires: bison
|
||||
BuildRequires: cairo-devel
|
||||
BuildRequires: enchant-devel
|
||||
BuildRequires: flex
|
||||
BuildRequires: fontconfig-devel
|
||||
BuildRequires: freetype-devel
|
||||
BuildRequires: geoclue2-devel
|
||||
BuildRequires: gettext
|
||||
BuildRequires: glib2-devel
|
||||
BuildRequires: gobject-introspection-devel
|
||||
BuildRequires: gperf
|
||||
BuildRequires: gstreamer1-devel
|
||||
BuildRequires: gstreamer1-plugins-base-devel
|
||||
BuildRequires: gstreamer1-plugins-bad-free-devel
|
||||
BuildRequires: gtk2-devel
|
||||
BuildRequires: gtk3-devel
|
||||
BuildRequires: gtk-doc >= 1.25
|
||||
BuildRequires: harfbuzz-devel
|
||||
%if ! 0%{?bundle_icu}
|
||||
BuildRequires: libicu-devel
|
||||
%endif
|
||||
BuildRequires: libjpeg-devel
|
||||
BuildRequires: libnotify-devel
|
||||
BuildRequires: libpng-devel
|
||||
BuildRequires: libsecret-devel
|
||||
BuildRequires: libsoup-devel >= 2.56
|
||||
BuildRequires: libwebp-devel
|
||||
BuildRequires: libxslt-devel
|
||||
BuildRequires: libXt-devel
|
||||
BuildRequires: libwayland-client-devel
|
||||
BuildRequires: libwayland-egl-devel
|
||||
BuildRequires: libwayland-server-devel
|
||||
BuildRequires: mesa-libEGL-devel
|
||||
BuildRequires: mesa-libGL-devel
|
||||
BuildRequires: mesa-libGLES-devel
|
||||
BuildRequires: pcre-devel
|
||||
BuildRequires: perl-Switch
|
||||
BuildRequires: perl-JSON-PP
|
||||
BuildRequires: ruby
|
||||
BuildRequires: rubygems
|
||||
BuildRequires: sqlite-devel
|
||||
BuildRequires: hyphen-devel
|
||||
BuildRequires: gnutls-devel
|
||||
%if 0%{?rhel} == 7
|
||||
BuildRequires: devtoolset-7-gcc
|
||||
BuildRequires: devtoolset-7-gcc-c++
|
||||
BuildRequires: devtoolset-7-build
|
||||
BuildRequires: devtoolset-7-libatomic-devel
|
||||
BuildRequires: llvm-toolset-7-cmake
|
||||
%else
|
||||
BuildRequires: libatomic
|
||||
BuildRequires: cmake
|
||||
%endif
|
||||
|
||||
Requires: geoclue2
|
||||
|
||||
%if 0%{?bundle_icu}
|
||||
BuildRequires: doxygen
|
||||
BuildRequires: autoconf
|
||||
BuildRequires: python
|
||||
%endif
|
||||
|
||||
# Obsolete libwebkit2gtk from the webkitgtk3 package
|
||||
Obsoletes: libwebkit2gtk < 2.5.0
|
||||
Provides: libwebkit2gtk = %{version}-%{release}
|
||||
|
||||
# We're supposed to specify versions here, but these Google libs don't do
|
||||
# normal releases. Accordingly, they're not suitable to be system libs.
|
||||
# Provides: bundled(angle)
|
||||
# Provides: bundled(brotli)
|
||||
# Provides: bundled(woff2)
|
||||
|
||||
# Require the jsc subpackage
|
||||
Requires: %{name}-jsc%{?_isa} = %{version}-%{release}
|
||||
|
||||
# Require the support for the GTK+ 2 based NPAPI plugins
|
||||
# Would be nice to recommend as in Fedora, but RHEL7 RPM doesn't support it.
|
||||
Requires: %{name}-plugin-process-gtk2%{?_isa} = %{version}-%{release}
|
||||
|
||||
%description
|
||||
WebKitGTK+ is the port of the portable web rendering engine WebKit to the
|
||||
GTK+ platform.
|
||||
|
||||
This package contains WebKitGTK+ for GTK+ 3.
|
||||
|
||||
%package devel
|
||||
Summary: Development files for %{name}
|
||||
Requires: %{name}%{?_isa} = %{version}-%{release}
|
||||
Requires: %{name}-jsc%{?_isa} = %{version}-%{release}
|
||||
Requires: %{name}-jsc-devel%{?_isa} = %{version}-%{release}
|
||||
|
||||
%description devel
|
||||
The %{name}-devel package contains libraries, build data, and header
|
||||
files for developing applications that use %{name}.
|
||||
|
||||
%package doc
|
||||
Summary: Documentation files for %{name}
|
||||
BuildArch: noarch
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
|
||||
%description doc
|
||||
This package contains developer documentation for %{name}.
|
||||
|
||||
%package jsc
|
||||
Summary: JavaScript engine from %{name}
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
|
||||
%description jsc
|
||||
This package contains JavaScript engine from %{name}.
|
||||
|
||||
%package jsc-devel
|
||||
Summary: Development files for JavaScript engine from %{name}
|
||||
Requires: %{name}-jsc%{?_isa} = %{version}-%{release}
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
|
||||
%description jsc-devel
|
||||
The %{name}-jsc-devel package contains libraries, build data, and header
|
||||
files for developing applications that use JavaScript engine from %{name}.
|
||||
|
||||
%package plugin-process-gtk2
|
||||
Summary: GTK+ 2 based NPAPI plugins support for %{name}
|
||||
Requires: %{name}-jsc%{?_isa} = %{version}-%{release}
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
|
||||
%description plugin-process-gtk2
|
||||
Support for the GTK+ 2 based NPAPI plugins (such as Adobe Flash) for %{name}.
|
||||
|
||||
%prep
|
||||
%if 0%{?bundle_icu}
|
||||
%setup -q -T -n icu -b 1
|
||||
%patch50 -p2 -R -b .icu8198.revert.icu5431.patch
|
||||
%patch51 -p1 -b .icu8800.freeserif.crash.patch
|
||||
%patch52 -p1 -b .icu7601.Indic-ccmp.patch
|
||||
%patch53 -p1 -b .gennorm2-man.patch
|
||||
%patch54 -p1 -b .icuinfo-man.patch
|
||||
%ifarch armv7hl
|
||||
%patch55 -p1 -b .armv7hl-disable-tests.patch
|
||||
%endif
|
||||
%patch56 -p1 -b .rhbz1360340-icu-changeset-39109.patch
|
||||
%patch57 -p1 -b .diff-icu_trunk_source_common_locid.cpp-from-39282-to-39384.patch
|
||||
%patch58 -p1 -b .dont_use_clang_even_if_installed
|
||||
%patch59 -p1 -b .rhbz1444101-icu-changeset-39671.patch
|
||||
|
||||
%setup -q -T -n webkitgtk-%{version} -b 0
|
||||
%patch0 -p1 -b .cloop_big_endians
|
||||
%patch1 -p1 -b .page_size
|
||||
%patch2 -R -p1 -b .woff2_1.0.2
|
||||
%patch3 -R -p1 -b .library_typos
|
||||
%patch4 -p1 -b .remove_woff2
|
||||
%patch5 -p1 -b .remove_brotli
|
||||
%patch6 -p1 -b .lower_libgcrypt_version
|
||||
%patch7 -p1 -b .no_webp_demux
|
||||
%patch8 -p1 -b .memset_zero_length
|
||||
%patch9 -p1 -b .covscan_already_fixed
|
||||
%patch10 -p1 -b .covscan_uninit_ctor
|
||||
%patch11 -p1 -b .covscan_uninit
|
||||
%patch12 -p1 -b .covscan_1
|
||||
%patch13 -p1 -b .covscan_2
|
||||
%patch14 -p1 -b .covscan_3
|
||||
%patch15 -p1 -b .covscan_va_close
|
||||
%patch16 -p1 -b .covscan_bmalloc
|
||||
%patch17 -p1 -b .covscan_wtf
|
||||
%patch18 -p1 -b .covscan_gstreamer
|
||||
%patch19 -p1 -b .minibrowser_labels
|
||||
%patch20 -p1 -b .atk_crash
|
||||
%patch21 -p1 -b .atk_continuation_crash
|
||||
%else
|
||||
%autosetup -p1 -n webkitgtk-%{version}
|
||||
%endif
|
||||
|
||||
# Remove bundled libraries
|
||||
rm -rf Source/ThirdParty/gtest/
|
||||
rm -rf Source/ThirdParty/qunit/
|
||||
|
||||
%build
|
||||
%ifarch s390 aarch64
|
||||
# Use linker flags to reduce memory consumption - on other arches the ld.gold is
|
||||
# used and also it doesn't have the --reduce-memory-overheads option
|
||||
%global optflags %{optflags} -Wl,--no-keep-memory -Wl,--reduce-memory-overheads
|
||||
%endif
|
||||
|
||||
# Decrease debuginfo even on ix86 because of:
|
||||
# https://bugs.webkit.org/show_bug.cgi?id=140176
|
||||
%ifarch s390 s390x %{arm} %{ix86} ppc %{power64} %{mips}
|
||||
# Decrease debuginfo verbosity to reduce memory consumption even more
|
||||
%global optflags %(echo %{optflags} | sed 's/-g /-g1 /')
|
||||
%endif
|
||||
|
||||
%ifarch ppc
|
||||
# Use linker flag -relax to get WebKit build under ppc(32) with JIT disabled
|
||||
%global optflags %{optflags} -Wl,-relax
|
||||
%endif
|
||||
|
||||
%if 0%{?bundle_icu}
|
||||
pushd ../icu/source
|
||||
autoconf
|
||||
CFLAGS='%optflags -fno-strict-aliasing'
|
||||
CXXFLAGS='%optflags -fno-strict-aliasing'
|
||||
%{!?endian: %global endian %(%{__python} -c "import sys;print (0 if sys.byteorder=='big' else 1)")}
|
||||
# " this line just fixes syntax highlighting for vim that is confused by the above and continues literal
|
||||
# Endian: BE=0 LE=1
|
||||
%if ! 0%{?endian}
|
||||
CPPFLAGS='-DU_IS_BIG_ENDIAN=1'
|
||||
%endif
|
||||
|
||||
#rhbz856594 do not use --disable-renaming or cope with the mess
|
||||
OPTIONS='--with-data-packaging=library --disable-samples'
|
||||
%configure $OPTIONS
|
||||
|
||||
#rhbz#225896
|
||||
sed -i 's|-nodefaultlibs -nostdlib||' config/mh-linux
|
||||
#rhbz#681941
|
||||
sed -i 's|^LIBS =.*|LIBS = -L../lib -licuuc -lpthread -lm|' i18n/Makefile
|
||||
sed -i 's|^LIBS =.*|LIBS = -nostdlib -L../lib -licuuc -licui18n -lc -lgcc|' io/Makefile
|
||||
sed -i 's|^LIBS =.*|LIBS = -nostdlib -L../lib -licuuc -lc|' layout/Makefile
|
||||
sed -i 's|^LIBS =.*|LIBS = -nostdlib -L../lib -licuuc -licule -lc|' layoutex/Makefile
|
||||
sed -i 's|^LIBS =.*|LIBS = -nostdlib -L../../lib -licutu -licuuc -lc|' tools/ctestfw/Makefile
|
||||
# As of ICU 52.1 the -nostdlib in tools/toolutil/Makefile results in undefined reference to `__dso_handle'
|
||||
sed -i 's|^LIBS =.*|LIBS = -L../../lib -licui18n -licuuc -lpthread -lc|' tools/toolutil/Makefile
|
||||
#rhbz#813484
|
||||
sed -i 's| \$(docfilesdir)/installdox||' Makefile
|
||||
# There is no source/doc/html/search/ directory
|
||||
sed -i '/^\s\+\$(INSTALL_DATA) \$(docsrchfiles) \$(DESTDIR)\$(docdir)\/\$(docsubsrchdir)\s*$/d' Makefile
|
||||
# rhbz#856594 The configure --disable-renaming and possibly other options
|
||||
# result in icu/source/uconfig.h.prepend being created, include that content in
|
||||
# icu/source/common/unicode/uconfig.h to propagate to consumer packages.
|
||||
test -f uconfig.h.prepend && sed -e '/^#define __UCONFIG_H__/ r uconfig.h.prepend' -i common/unicode/uconfig.h
|
||||
|
||||
# more verbosity for build.log
|
||||
sed -i -r 's|(PKGDATA_OPTS = )|\1-v |' data/Makefile
|
||||
|
||||
make %{?_smp_mflags} VERBOSE=1
|
||||
cd ..
|
||||
BUNDLED_ICU_PATH="`pwd`/icu_installed"
|
||||
make %{?_smp_mflags} -C source install DESTDIR=$BUNDLED_ICU_PATH
|
||||
popd
|
||||
%endif
|
||||
|
||||
# Enable DTS
|
||||
%if 0%{?rhel} == 7
|
||||
source /opt/rh/devtoolset-7/enable
|
||||
source /opt/rh/llvm-toolset-7/enable
|
||||
%define __cmake /opt/rh/llvm-toolset-7/root/usr/bin/cmake
|
||||
%endif
|
||||
|
||||
# Disable ld.gold on s390 as it does not have it.
|
||||
# Also for aarch64 as the support is in upstream, but not packaged in Fedora.
|
||||
# Disable subtle crypto as we have an old libgcrypt in RHEL 7
|
||||
mkdir -p %{_target_platform}
|
||||
pushd %{_target_platform}
|
||||
%cmake \
|
||||
-DPORT=GTK \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
%if 0%{bundle_icu}
|
||||
-DICU_DATA_LIBRARY=$BUNDLED_ICU_PATH/%{_libdir}/libicudata.so \
|
||||
-DICU_I18N_LIBRARY=$BUNDLED_ICU_PATH/%{_libdir}/libicui18n.so \
|
||||
-DICU_INCLUDE_DIR=$BUNDLED_ICU_PATH/%{_includedir} \
|
||||
-DICU_LIBRARY=$BUNDLED_ICU_PATH/%{_libdir}/libicuuc.so \
|
||||
-DCMAKE_INSTALL_RPATH=%{_libdir}/webkit2gtk-4.0 \
|
||||
%endif
|
||||
-DENABLE_GTKDOC=ON \
|
||||
-DENABLE_MINIBROWSER=ON \
|
||||
-DENABLE_SUBTLE_CRYPTO=OFF \
|
||||
%ifarch s390 aarch64
|
||||
-DUSE_LD_GOLD=OFF \
|
||||
%endif
|
||||
%ifarch s390 s390x ppc %{power64} aarch64 %{mips}
|
||||
-DENABLE_JIT=OFF \
|
||||
-DUSE_SYSTEM_MALLOC=ON \
|
||||
%endif
|
||||
..
|
||||
popd
|
||||
|
||||
# Remove the static amount of jobs once
|
||||
# https://projects.engineering.redhat.com/browse/BREW-2146 is resolved
|
||||
# make %{?_smp_mflags} -C %{_target_platform}
|
||||
make -j4 -C %{_target_platform}
|
||||
|
||||
%install
|
||||
%if 0%{?bundle_icu}
|
||||
pushd ../icu/icu_installed/%{_libdir}
|
||||
mkdir -p $RPM_BUILD_ROOT%{_libdir}/webkit2gtk-4.0/
|
||||
cp -a libicudata.so.* $RPM_BUILD_ROOT%{_libdir}/webkit2gtk-4.0/
|
||||
cp -a libicui18n.so.* $RPM_BUILD_ROOT%{_libdir}/webkit2gtk-4.0/
|
||||
cp -a libicuuc.so.* $RPM_BUILD_ROOT%{_libdir}/webkit2gtk-4.0/
|
||||
popd
|
||||
# We don't want debuginfo generated for the bundled icu libraries.
|
||||
# Turn off execute bit so they aren't included in the debuginfo.list.
|
||||
# We'll turn the execute bit on again in %%files.
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1486771
|
||||
chmod 644 $RPM_BUILD_ROOT%{_libdir}/webkit2gtk-4.0/libicudata.so.57.1
|
||||
chmod 644 $RPM_BUILD_ROOT%{_libdir}/webkit2gtk-4.0/libicui18n.so.57.1
|
||||
chmod 644 $RPM_BUILD_ROOT%{_libdir}/webkit2gtk-4.0/libicuuc.so.57.1
|
||||
%endif
|
||||
|
||||
%make_install %{?_smp_mflags} -C %{_target_platform}
|
||||
|
||||
%find_lang WebKit2GTK-4.0
|
||||
|
||||
# Finally, copy over and rename various files for %%license inclusion
|
||||
%add_to_license_files Source/JavaScriptCore/COPYING.LIB
|
||||
%add_to_license_files Source/JavaScriptCore/icu/LICENSE
|
||||
%add_to_license_files Source/ThirdParty/ANGLE/LICENSE
|
||||
%add_to_license_files Source/ThirdParty/ANGLE/src/common/third_party/smhasher/LICENSE
|
||||
%add_to_license_files Source/ThirdParty/ANGLE/src/third_party/compiler/LICENSE
|
||||
%add_to_license_files Source/ThirdParty/ANGLE/src/third_party/libXNVCtrl/LICENSE
|
||||
%add_to_license_files Source/ThirdParty/brotli/LICENSE
|
||||
%add_to_license_files Source/ThirdParty/woff2/LICENSE
|
||||
%add_to_license_files Source/WebCore/icu/LICENSE
|
||||
%add_to_license_files Source/WebCore/LICENSE-APPLE
|
||||
%add_to_license_files Source/WebCore/LICENSE-LGPL-2
|
||||
%add_to_license_files Source/WebCore/LICENSE-LGPL-2.1
|
||||
%add_to_license_files Source/WebInspectorUI/UserInterface/External/CodeMirror/LICENSE
|
||||
%add_to_license_files Source/WebInspectorUI/UserInterface/External/ESLint/LICENSE
|
||||
%add_to_license_files Source/WebInspectorUI/UserInterface/External/Esprima/LICENSE
|
||||
%add_to_license_files Source/WebInspectorUI/UserInterface/External/three.js/LICENSE
|
||||
%add_to_license_files Source/WTF/icu/LICENSE
|
||||
%add_to_license_files Source/WTF/wtf/dtoa/COPYING
|
||||
%add_to_license_files Source/WTF/wtf/dtoa/LICENSE
|
||||
|
||||
%post -p /sbin/ldconfig
|
||||
%postun -p /sbin/ldconfig
|
||||
%post jsc -p /sbin/ldconfig
|
||||
%postun jsc -p /sbin/ldconfig
|
||||
|
||||
%files -f WebKit2GTK-4.0.lang
|
||||
%license _license_files/*ThirdParty*
|
||||
%license _license_files/*WebCore*
|
||||
%license _license_files/*WebInspectorUI*
|
||||
%license _license_files/*WTF*
|
||||
%{_libdir}/libwebkit2gtk-4.0.so.*
|
||||
%dir %{_libdir}/girepository-1.0
|
||||
%{_libdir}/girepository-1.0/WebKit2-4.0.typelib
|
||||
%{_libdir}/girepository-1.0/WebKit2WebExtension-4.0.typelib
|
||||
%{_libdir}/webkit2gtk-4.0/
|
||||
# Turn on executable bit again for bundled icu libraries.
|
||||
# Was disabled in %%install to prevent debuginfo stripping.
|
||||
%attr(0755,root,root) %{_libdir}/webkit2gtk-4.0/libicudata.so.57.1
|
||||
%attr(0755,root,root) %{_libdir}/webkit2gtk-4.0/libicui18n.so.57.1
|
||||
%attr(0755,root,root) %{_libdir}/webkit2gtk-4.0/libicuuc.so.57.1
|
||||
%{_libexecdir}/webkit2gtk-4.0/
|
||||
%{_bindir}/WebKitWebDriver
|
||||
%exclude %{_libexecdir}/webkit2gtk-4.0/WebKitPluginProcess2
|
||||
|
||||
%files devel
|
||||
%{_libexecdir}/webkit2gtk-4.0/MiniBrowser
|
||||
%{_includedir}/webkitgtk-4.0/
|
||||
%exclude %{_includedir}/webkitgtk-4.0/JavaScriptCore
|
||||
%{_libdir}/libwebkit2gtk-4.0.so
|
||||
%{_libdir}/pkgconfig/webkit2gtk-4.0.pc
|
||||
%{_libdir}/pkgconfig/webkit2gtk-web-extension-4.0.pc
|
||||
%{_datadir}/gir-1.0/WebKit2-4.0.gir
|
||||
%{_datadir}/gir-1.0/WebKit2WebExtension-4.0.gir
|
||||
|
||||
%files jsc
|
||||
%license _license_files/*JavaScriptCore*
|
||||
%{_libdir}/libjavascriptcoregtk-4.0.so.*
|
||||
%dir %{_libdir}/girepository-1.0
|
||||
%{_libdir}/girepository-1.0/JavaScriptCore-4.0.typelib
|
||||
|
||||
%files jsc-devel
|
||||
%{_libexecdir}/webkit2gtk-4.0/jsc
|
||||
%dir %{_includedir}/webkitgtk-4.0
|
||||
%{_includedir}/webkitgtk-4.0/JavaScriptCore/
|
||||
%{_libdir}/libjavascriptcoregtk-4.0.so
|
||||
%{_libdir}/pkgconfig/javascriptcoregtk-4.0.pc
|
||||
%dir %{_datadir}/gir-1.0
|
||||
%{_datadir}/gir-1.0/JavaScriptCore-4.0.gir
|
||||
|
||||
%files plugin-process-gtk2
|
||||
%{_libexecdir}/webkit2gtk-4.0/WebKitPluginProcess2
|
||||
|
||||
%files doc
|
||||
%dir %{_datadir}/gtk-doc
|
||||
%dir %{_datadir}/gtk-doc/html
|
||||
%{_datadir}/gtk-doc/html/webkit2gtk-4.0/
|
||||
%{_datadir}/gtk-doc/html/webkitdomgtk-4.0/
|
||||
|
||||
%changelog
|
||||
* Tue Aug 14 2018 Tomas Popela <tpopela@redhat.com> - 2.20.5-1
|
||||
- Update to 2.20.5 - technically it was not necessary as the only difference
|
||||
between 2.20.4 and .5 was the revert of one change, that we already reverted
|
||||
while building 2.20.4. But it's better to stay with upstream.
|
||||
- Update the labels patch with the version that was pushed upstream.
|
||||
- Resolves: rhbz#1576544
|
||||
|
||||
* Thu Aug 09 2018 Tomas Popela <tpopela@redhat.com> - 2.20.4-2
|
||||
- webkitgtk4: Crash on Google login page when a11y is active
|
||||
- Resolves: rhbz#1503624
|
||||
- Revert patch causing rendering glitches
|
||||
|
||||
* Mon Aug 06 2018 Tomas Popela <tpopela@redhat.com> - 2.20.4-1
|
||||
- Update to 2.20.4
|
||||
- Resolves: rhbz#1576544
|
||||
- WebKitWebProcess crashes when a11y is active
|
||||
- Resolves: rhbz#1591638
|
||||
|
||||
* Wed Jun 27 2018 Tomas Popela <tpopela@redhat.com> - 2.20.3-5
|
||||
- Add GStreamer coverity fixes
|
||||
- Resolves: rhbz#1576544
|
||||
|
||||
* Tue Jun 26 2018 Tomas Popela <tpopela@redhat.com> - 2.20.3-4
|
||||
- More rpmdiff and covscan fixes
|
||||
- Resolves: rhbz#1576544
|
||||
|
||||
* Wed Jun 13 2018 Tomas Popela <tpopela@redhat.com> - 2.20.3-3
|
||||
- Unbundle cmake
|
||||
- Add covscan fixes
|
||||
- Resolves: rhbz#1576544
|
||||
|
||||
* Tue Jun 12 2018 Tomas Popela <tpopela@redhat.com> - 2.20.3-2
|
||||
- Fix the rpmdiff warning
|
||||
- Resolves: rhbz#1576544
|
||||
|
||||
* Mon Jun 11 2018 Tomas Popela <tpopela@redhat.com> - 2.20.3-1
|
||||
- Update to 2.20.3
|
||||
- Resolves: rhbz#1576544
|
||||
|
||||
* Fri Jun 08 2018 Tomas Popela <tpopela@redhat.com> - 2.20.2-1
|
||||
- Update to 2.20.2
|
||||
- Resolves: rhbz#1576544
|
||||
|
||||
* Wed Nov 08 2017 Tomas Popela <tpopela@redhat.com> - 2.16.6-6
|
||||
- Don't strip debug info from bundled icu libraries, otherwise there
|
||||
will be conflicts between webkitgtk4-debuginfo and icu-debuginfo packages
|
||||
- Resolves: rhbz#1486771
|
||||
|
||||
* Mon Oct 09 2017 Tomas Popela <tpopela@redhat.com> - 2.16.6-5
|
||||
- Update the bundled brotli and woff2 to the latest releases due to
|
||||
woff2's license incompatibility with WebKitGTK+ project
|
||||
- Resolves: rhbz#1499745
|
||||
- Drop unused patches
|
||||
|
||||
* Fri Sep 29 2017 Tomas Popela <tpopela@redhat.com> - 2.16.6-4
|
||||
- Build wayland support
|
||||
- Backport fixes proposed by upstream to 2.16 branch
|
||||
- Remove accidentally committed workaround for rhbz#1486771
|
||||
- Resolves: rhbz#1496800
|
||||
|
||||
* Tue Sep 05 2017 Tomas Popela <tpopela@redhat.com> - 2.16.6-3
|
||||
- Coverity scan fixes
|
||||
- Resolves: rhbz#1476707
|
||||
|
||||
* Fri Aug 25 2017 Tomas Popela <tpopela@redhat.com> - 2.16.6-2
|
||||
- Backport security fixes for bundled icu
|
||||
- Backport geoclue2 id fixes
|
||||
- Resolves: rhbz#1476707
|
||||
|
||||
* Thu Aug 17 2017 Tomas Popela <tpopela@redhat.com> - 2.16.6-1
|
||||
- Update to 2.16.6
|
||||
- Resolves: rhbz#1476707
|
||||
|
||||
* Fri Jun 16 2017 Tomas Popela <tpopela@redhat.com> - 2.14.7-2
|
||||
- Fix a CLoop patch that was not correctly backported from upstream, causing
|
||||
crashes on big endian machines
|
||||
- Resolves: rhbz#1442160
|
||||
|
||||
* Thu Jun 01 2017 Tomas Popela <tpopela@redhat.com> - 2.14.7-1
|
||||
- Update to 2.14.7
|
||||
- Backport more of a11y fixes from upstream
|
||||
- Fix JSC crashes on big endian arches
|
||||
- Resolves: rhbz#1442160
|
||||
|
||||
* Wed May 10 2017 Milan Crha <mcrha@redhat.com> - 2.14.6-6
|
||||
- Add upstream patch to fix login to Google account
|
||||
- Resolves: rhbz#1448192
|
||||
|
||||
* Wed Apr 26 2017 Tomas Popela <tpopela@redhat.com> - 2.14.6-5
|
||||
- Don't require icu libraries that are bundled
|
||||
- Resolves: rhbz#1414413
|
||||
|
||||
* Tue Apr 25 2017 Tomas Popela <tpopela@redhat.com> - 2.14.6-4
|
||||
- Use the right function for removing from provides
|
||||
- Resolves: rhbz#1383614
|
||||
|
||||
* Mon Apr 24 2017 Tomas Popela <tpopela@redhat.com> - 2.14.6-3
|
||||
- Bundle only needed icu libraries
|
||||
- Don't list bundled icu libraries in provides
|
||||
- Resolves: rhbz#1383614
|
||||
|
||||
* Mon Apr 24 2017 Tomas Popela <tpopela@redhat.com> - 2.14.6-2
|
||||
- Bundle icu57
|
||||
- Resolves: rhbz#1414413
|
||||
|
||||
* Mon Apr 10 2017 Tomas Popela <tpopela@redhat.com> - 2.14.6-1
|
||||
- Update to 2.14.6
|
||||
- Resolves: rhbz#1440681
|
||||
- Don't crash is no render is available in AX render object
|
||||
- Resolves: rhbz#1437672
|
||||
|
||||
* Tue Mar 21 2017 Tomas Popela <tpopela@redhat.com> - 2.14.5-5
|
||||
- Add more Coverity scan fixes
|
||||
- Remove icu from sources
|
||||
- Resolves: rhbz#1383614
|
||||
|
||||
* Mon Mar 13 2017 Tomas Popela <tpopela@redhat.com> - 2.14.5-4
|
||||
- Add some Coverity scan fixes
|
||||
- Resolves: rhbz#1383614
|
||||
|
||||
* Tue Feb 28 2017 Tomas Popela <tpopela@redhat.com> - 2.14.5-3
|
||||
- Add explicit requires of webkitgtk4-jsc for -devel and -plugin-process-gtk2
|
||||
subpackages (found by rpmdiff).
|
||||
- Resolves: rhbz#1383614
|
||||
|
||||
* Mon Feb 20 2017 Tomas Popela <tpopela@redhat.com> - 2.14.5-2
|
||||
- Remove bundled ICU and require libicu57
|
||||
- Resolves: rhbz#1383614
|
||||
|
||||
* Thu Feb 16 2017 Kalev Lember <klember@redhat.com> - 2.14.5-1
|
||||
- Update to 2.14.5
|
||||
- Resolves: rhbz#1383614
|
||||
|
||||
* Fri Feb 10 2017 Tomas Popela <tpopela@redhat.com> - 2.14.4-1
|
||||
- Initial RHEL packaging
|
||||
- Temporary bundling icu57 until rhbz#1414413 is resolved
|
||||
- Resolves: rhbz#1383614
|
Loading…
Reference in New Issue