summaryrefslogtreecommitdiff
path: root/www/firefox
diff options
context:
space:
mode:
authormartin <martin>2008-08-11 10:09:21 +0000
committermartin <martin>2008-08-11 10:09:21 +0000
commit002caf9130088d75465607ad6f5d5a161dd4fb60 (patch)
tree8b46a22d1ed5a1f4c53ea6305365e4831d55e471 /www/firefox
parentd096dae9efcdef561aad9203c5e265e03ac0ef81 (diff)
downloadpkgsrc-002caf9130088d75465607ad6f5d5a161dd4fb60.tar.gz
Add "unicode" processing alignment patch from mozilla's bugzilla to make
firefox work again on archs requiring strict alignement. Bump pkgrevision.
Diffstat (limited to 'www/firefox')
-rw-r--r--www/firefox/Makefile3
-rw-r--r--www/firefox/distinfo5
-rwxr-xr-xwww/firefox/patches/patch-ee37
-rwxr-xr-xwww/firefox/patches/patch-ef37
-rwxr-xr-xwww/firefox/patches/patch-eg99
5 files changed, 179 insertions, 2 deletions
diff --git a/www/firefox/Makefile b/www/firefox/Makefile
index 5a1d0c8fd32..2527ed21589 100644
--- a/www/firefox/Makefile
+++ b/www/firefox/Makefile
@@ -1,7 +1,8 @@
-# $NetBSD: Makefile,v 1.46 2007/08/07 21:59:11 ghen Exp $
+# $NetBSD: Makefile,v 1.47 2008/08/11 10:09:21 martin Exp $
MOZILLA= firefox
COMMENT= Lightweight gecko-based web browser
+PKGREVISION= 1
MOZILLA_USE_GTK2= # yes
MOZILLA_USE_XFT= YES
diff --git a/www/firefox/distinfo b/www/firefox/distinfo
index 6dc645da1be..d9650e9e01f 100644
--- a/www/firefox/distinfo
+++ b/www/firefox/distinfo
@@ -1,4 +1,4 @@
-$NetBSD: distinfo,v 1.80 2008/07/16 09:52:56 ghen Exp $
+$NetBSD: distinfo,v 1.81 2008/08/11 10:09:21 martin Exp $
SHA1 (firefox-2.0.0.16-source.tar.bz2) = ae1d451ce85a5515b37d73d2c4b7cb1377206d86
RMD160 (firefox-2.0.0.16-source.tar.bz2) = 485c5d7c3c3fc9c462ee348802742905d3becfdf
@@ -68,3 +68,6 @@ SHA1 (patch-ea) = 14e31d17c2493e468cd01f99abfc996853a11032
SHA1 (patch-eb) = dc9232b10075d17f7ed742e7be8ea036db2f0241
SHA1 (patch-ec) = 8235af6634306b2a5725754cd5a32285b311b714
SHA1 (patch-ed) = ae922f591b871a1f427c4c32d76a2c25701382d4
+SHA1 (patch-ee) = 02a9320b2f9e8d9cdb3837b74b7aa51080946d73
+SHA1 (patch-ef) = d9ac38cca1105931db34927930984cc35c3cd833
+SHA1 (patch-eg) = 82a92c2982c5a19df866323a2522703a166ba24e
diff --git a/www/firefox/patches/patch-ee b/www/firefox/patches/patch-ee
new file mode 100755
index 00000000000..0e3514e1e82
--- /dev/null
+++ b/www/firefox/patches/patch-ee
@@ -0,0 +1,37 @@
+$NetBSD: patch-ee,v 1.1 2008/08/11 10:09:21 martin Exp $
+
+This is align.patch from https://bugzilla.mozilla.org/show_bug.cgi?id=161826
+(https://bugzilla.mozilla.org/attachment.cgi?id=294965)
+
+It is needed to make firefox work on CPUs requiring strict alignment.
+
+(Part 1 of 3 [patch-ee .. patch-eg])
+
+Index: intl/unicharutil/util/nsUnicharUtils.cpp
+===================================================================
+RCS file: /cvsroot/mozilla/intl/unicharutil/util/nsUnicharUtils.cpp,v
+retrieving revision 1.27.8.1
+diff -u -b -B -u -8 -p -r1.27.8.1 nsUnicharUtils.cpp
+--- intl/unicharutil/util/nsUnicharUtils.cpp 22 Jun 2006 19:13:00 -0000 1.27.8.1
++++ intl/unicharutil/util/nsUnicharUtils.cpp 31 Dec 2007 16:07:40 -0000
+@@ -343,8 +343,20 @@ ToUpperCase(PRUnichar aChar)
+ if (aChar < 256)
+ result = toupper(char(aChar));
+ else
+ result = aChar;
+ }
+ return result;
+ }
+
++void
++SetUnichar(void *ptr, PRUnichar aChar)
++{
++#if NEED_STRICT_ALIGNMENT
++ *((char *) ptr) = *((char *) &aChar);
++ *((char *) ptr + 1) = *((char *) &aChar + 1);
++#else
++ *((PRUnichar *) ptr) = aChar;
++#endif
++}
++
++
diff --git a/www/firefox/patches/patch-ef b/www/firefox/patches/patch-ef
new file mode 100755
index 00000000000..c8cc00683fc
--- /dev/null
+++ b/www/firefox/patches/patch-ef
@@ -0,0 +1,37 @@
+$NetBSD: patch-ef,v 1.1 2008/08/11 10:09:21 martin Exp $
+
+This is align.patch from https://bugzilla.mozilla.org/show_bug.cgi?id=161826
+(https://bugzilla.mozilla.org/attachment.cgi?id=294965)
+
+It is needed to make firefox work on CPUs requiring strict alignment.
+
+(Part 2 of 3 [patch-ee .. patch-eg])
+
+Index: intl/unicharutil/util/nsUnicharUtils.h
+===================================================================
+RCS file: /cvsroot/mozilla/intl/unicharutil/util/nsUnicharUtils.h,v
+retrieving revision 1.19
+diff -u -b -B -u -8 -p -r1.19 nsUnicharUtils.h
+--- intl/unicharutil/util/nsUnicharUtils.h 24 Feb 2005 15:50:57 -0000 1.19
++++ intl/unicharutil/util/nsUnicharUtils.h 31 Dec 2007 16:07:40 -0000
+@@ -77,16 +77,20 @@ inline PRBool CaseInsensitiveFindInReada
+ aHay.BeginReading(searchBegin),
+ aHay.EndReading(searchEnd),
+ nsCaseInsensitiveStringComparator());
+ }
+
+ PRUnichar ToUpperCase(PRUnichar);
+ PRUnichar ToLowerCase(PRUnichar);
+
++#define NEED_STRICT_ALIGNMENT defined(__sparc__) || defined(__alpha__) || defined(__mips__)
++
++void SetUnichar(void *, PRUnichar);
++
+ inline PRBool IsUpperCase(PRUnichar c) {
+ return ToLowerCase(c) != c;
+ }
+
+ inline PRBool IsLowerCase(PRUnichar c) {
+ return ToUpperCase(c) != c;
+ }
+
diff --git a/www/firefox/patches/patch-eg b/www/firefox/patches/patch-eg
new file mode 100755
index 00000000000..fd73ab08792
--- /dev/null
+++ b/www/firefox/patches/patch-eg
@@ -0,0 +1,99 @@
+$NetBSD: patch-eg,v 1.1 2008/08/11 10:09:21 martin Exp $
+
+This is align.patch from https://bugzilla.mozilla.org/show_bug.cgi?id=161826
+(https://bugzilla.mozilla.org/attachment.cgi?id=294965)
+
+It is needed to make firefox work on CPUs requiring strict alignment.
+
+(Part 3 of 3 [patch-ee .. patch-eg])
+
+Index: layout/generic/nsTextFrame.cpp
+===================================================================
+RCS file: /cvsroot/mozilla/layout/generic/Attic/nsTextFrame.cpp,v
+retrieving revision 1.513.4.17
+diff -u -b -B -u -8 -p -r1.513.4.17 nsTextFrame.cpp
+--- layout/generic/nsTextFrame.cpp 19 Sep 2007 01:45:40 -0000 1.513.4.17
++++ layout/generic/nsTextFrame.cpp 31 Dec 2007 16:07:41 -0000
+@@ -5118,28 +5118,37 @@ struct TextRun {
+ mSegments[mNumSegments].mIsWhitespace = aIsWhitespace;
+ mTotalContentLen += aContentLen;
+ mSegments[mNumSegments].mContentLen = PRUint32(mTotalContentLen);
+ mNumSegments++;
+ }
+ };
+
+ // Transforms characters in place from ascii to Unicode
+-static void
++static PRUnichar *
+ TransformTextToUnicode(char* aText, PRInt32 aNumChars)
+ {
+ // Go backwards over the characters and convert them.
+ unsigned char* cp1 = (unsigned char*)aText + aNumChars - 1;
+- PRUnichar* cp2 = (PRUnichar*)aText + (aNumChars - 1);
++ PRUnichar* cp2;
++ PRUnichar* ret;
+
+- while (aNumChars-- > 0) {
+- // XXX: If you crash here then you may see the issue described
+- // in http://bugzilla.mozilla.org/show_bug.cgi?id=36146#c44
+- *cp2-- = PRUnichar(*cp1--);
+- }
++ if ((unsigned long) aText & 0x1)
++ cp2 = ((PRUnichar*)(aText + 1));
++ else
++ cp2 = (PRUnichar*)aText;
++
++ ret = cp2;
++
++ cp2 += (aNumChars - 1);
++
++ while (aNumChars-- > 0)
++ SetUnichar(cp2--, PRUnichar(*cp1--));
++
++ return ret;
+ }
+
+ PRUint32
+ nsTextFrame::EstimateNumChars(PRUint32 aAvailableWidth,
+ PRUint32 aAverageCharWidth)
+ {
+ // Estimate the number of characters that will fit. Use 105% of the available
+ // width divided by the average character width.
+@@ -5697,17 +5706,17 @@ nsTextFrame::MeasureText(nsPresContext*
+ PRUnichar* pWordBuf = lastWordPtr;
+ PRUint32 wordBufLen = aTx.GetWordBufferLength() -
+ (lastWordPtr - aTx.GetWordBuffer());
+
+ if (aTx.TransformedTextIsAscii()) {
+ // The text transform buffer contains ascii characters, so
+ // transform it to Unicode
+ NS_ASSERTION(wordBufLen >= PRUint32(lastWordLen), "no room to transform in place");
+- TransformTextToUnicode((char*)lastWordPtr, lastWordLen);
++ pWordBuf = TransformTextToUnicode((char*)lastWordPtr, lastWordLen);
+ }
+
+ // Look ahead in the text-run and compute the final word
+ // width, taking into account any style changes and stopping
+ // at the first breakable point.
+ if (!aTextData.mMeasureText || (lastWordDimensions.width == -1)) {
+ // We either didn't measure any text or we measured multiple words
+ // at once so either way we don't know lastWordDimensions. We'll have to
+@@ -6227,17 +6236,17 @@ nsTextFrame::TrimTrailingWhiteSpace(nsPr
+
+ static void
+ RevertSpacesToNBSP(PRUnichar* aBuffer, PRInt32 aWordLen)
+ {
+ PRUnichar* end = aBuffer + aWordLen;
+ for (; aBuffer < end; aBuffer++) {
+ PRUnichar ch = *aBuffer;
+ if (ch == ' ') {
+- *aBuffer = CH_NBSP;
++ SetUnichar(aBuffer, CH_NBSP);
+ }
+ }
+ }
+
+ nsTextDimensions
+ nsTextFrame::ComputeTotalWordDimensions(nsPresContext* aPresContext,
+ nsILineBreaker* aLineBreaker,
+ nsLineLayout& aLineLayout,