aboutsummaryrefslogtreecommitdiffstats
path: root/www
diff options
context:
space:
mode:
authorkan <kan@FreeBSD.org>2003-08-12 23:32:13 +0800
committerkan <kan@FreeBSD.org>2003-08-12 23:32:13 +0800
commita73e8c4d22836c793ee162b8379853211e7d5bdf (patch)
tree52eee082b45f5b3ffcd601fbfc6651b4a5c0c4cd /www
parentd40718e02c3e4323331cdf834a1e985f2b412f80 (diff)
downloadfreebsd-ports-gnome-a73e8c4d22836c793ee162b8379853211e7d5bdf.tar.gz
freebsd-ports-gnome-a73e8c4d22836c793ee162b8379853211e7d5bdf.tar.zst
freebsd-ports-gnome-a73e8c4d22836c793ee162b8379853211e7d5bdf.zip
Restore the patch to stop mozilla from crashing on some russian sites.
Diffstat (limited to 'www')
-rw-r--r--www/firefox-devel/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp57
-rw-r--r--www/firefox-esr/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp57
-rw-r--r--www/firefox/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp57
-rw-r--r--www/firefox10/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp57
-rw-r--r--www/firefox15/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp57
-rw-r--r--www/firefox3-devel/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp57
-rw-r--r--www/firefox35/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp57
-rw-r--r--www/firefox36/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp57
-rw-r--r--www/flock/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp57
-rw-r--r--www/mozilla-firebird/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp57
10 files changed, 570 insertions, 0 deletions
diff --git a/www/firefox-devel/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp b/www/firefox-devel/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp
new file mode 100644
index 000000000000..0b0e08247101
--- /dev/null
+++ b/www/firefox-devel/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp
@@ -0,0 +1,57 @@
+--- gfx/src/gtk/nsFontMetricsXft.cpp.save Thu Aug 7 12:14:49 2003
++++ gfx/src/gtk/nsFontMetricsXft.cpp Thu Aug 7 12:33:45 2003
+@@ -106,6 +106,7 @@
+ FcPattern *mPattern;
+ FcPattern *mFontName;
+ FcCharSet *mCharset;
++ int mNotXft;
+ };
+
+ class nsFontXftInfo;
+@@ -1051,7 +1052,7 @@
+ // font in our loaded list that supports the character
+ for (PRInt32 i = 0, end = mLoadedFonts.Count(); i < end; ++i) {
+ nsFontXft *font = (nsFontXft *)mLoadedFonts.ElementAt(i);
+- if (font->HasChar(PRUint32(aChar)))
++ if (font->HasChar(PRUint32(aChar)) && font->GetXftFont())
+ return font;
+ }
+
+@@ -1492,7 +1493,7 @@
+ // this character.
+ for (PRInt32 j = 0, end = mLoadedFonts.Count(); j < end; ++j) {
+ font = (nsFontXft *)mLoadedFonts.ElementAt(j);
+- if (font->HasChar(c)) {
++ if (font->HasChar(c) && font->GetXftFont()) {
+ currFont = font;
+ goto FoundFont; // for speed -- avoid "if" statement
+ }
+@@ -1922,6 +1923,7 @@
+ FcPatternReference(mFontName);
+
+ mXftFont = nsnull;
++ mNotXft = 0;
+
+ // set up our charset
+ mCharset = nsnull;
+@@ -1948,7 +1950,7 @@
+ XftFont *
+ nsFontXft::GetXftFont(void)
+ {
+- if (!mXftFont) {
++ if (!mXftFont && !mNotXft) {
+ FcPattern *pat = FcFontRenderPrepare(0, mPattern, mFontName);
+ if (!pat)
+ return nsnull;
+@@ -1967,8 +1969,10 @@
+ FcPatternDel(pat, FC_SPACING);
+
+ mXftFont = XftFontOpenPattern(GDK_DISPLAY(), pat);
+- if (!mXftFont)
++ if (!mXftFont) {
+ FcPatternDestroy(pat);
++ mNotXft = 1;
++ }
+ }
+
+ return mXftFont;
diff --git a/www/firefox-esr/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp b/www/firefox-esr/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp
new file mode 100644
index 000000000000..0b0e08247101
--- /dev/null
+++ b/www/firefox-esr/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp
@@ -0,0 +1,57 @@
+--- gfx/src/gtk/nsFontMetricsXft.cpp.save Thu Aug 7 12:14:49 2003
++++ gfx/src/gtk/nsFontMetricsXft.cpp Thu Aug 7 12:33:45 2003
+@@ -106,6 +106,7 @@
+ FcPattern *mPattern;
+ FcPattern *mFontName;
+ FcCharSet *mCharset;
++ int mNotXft;
+ };
+
+ class nsFontXftInfo;
+@@ -1051,7 +1052,7 @@
+ // font in our loaded list that supports the character
+ for (PRInt32 i = 0, end = mLoadedFonts.Count(); i < end; ++i) {
+ nsFontXft *font = (nsFontXft *)mLoadedFonts.ElementAt(i);
+- if (font->HasChar(PRUint32(aChar)))
++ if (font->HasChar(PRUint32(aChar)) && font->GetXftFont())
+ return font;
+ }
+
+@@ -1492,7 +1493,7 @@
+ // this character.
+ for (PRInt32 j = 0, end = mLoadedFonts.Count(); j < end; ++j) {
+ font = (nsFontXft *)mLoadedFonts.ElementAt(j);
+- if (font->HasChar(c)) {
++ if (font->HasChar(c) && font->GetXftFont()) {
+ currFont = font;
+ goto FoundFont; // for speed -- avoid "if" statement
+ }
+@@ -1922,6 +1923,7 @@
+ FcPatternReference(mFontName);
+
+ mXftFont = nsnull;
++ mNotXft = 0;
+
+ // set up our charset
+ mCharset = nsnull;
+@@ -1948,7 +1950,7 @@
+ XftFont *
+ nsFontXft::GetXftFont(void)
+ {
+- if (!mXftFont) {
++ if (!mXftFont && !mNotXft) {
+ FcPattern *pat = FcFontRenderPrepare(0, mPattern, mFontName);
+ if (!pat)
+ return nsnull;
+@@ -1967,8 +1969,10 @@
+ FcPatternDel(pat, FC_SPACING);
+
+ mXftFont = XftFontOpenPattern(GDK_DISPLAY(), pat);
+- if (!mXftFont)
++ if (!mXftFont) {
+ FcPatternDestroy(pat);
++ mNotXft = 1;
++ }
+ }
+
+ return mXftFont;
diff --git a/www/firefox/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp b/www/firefox/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp
new file mode 100644
index 000000000000..0b0e08247101
--- /dev/null
+++ b/www/firefox/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp
@@ -0,0 +1,57 @@
+--- gfx/src/gtk/nsFontMetricsXft.cpp.save Thu Aug 7 12:14:49 2003
++++ gfx/src/gtk/nsFontMetricsXft.cpp Thu Aug 7 12:33:45 2003
+@@ -106,6 +106,7 @@
+ FcPattern *mPattern;
+ FcPattern *mFontName;
+ FcCharSet *mCharset;
++ int mNotXft;
+ };
+
+ class nsFontXftInfo;
+@@ -1051,7 +1052,7 @@
+ // font in our loaded list that supports the character
+ for (PRInt32 i = 0, end = mLoadedFonts.Count(); i < end; ++i) {
+ nsFontXft *font = (nsFontXft *)mLoadedFonts.ElementAt(i);
+- if (font->HasChar(PRUint32(aChar)))
++ if (font->HasChar(PRUint32(aChar)) && font->GetXftFont())
+ return font;
+ }
+
+@@ -1492,7 +1493,7 @@
+ // this character.
+ for (PRInt32 j = 0, end = mLoadedFonts.Count(); j < end; ++j) {
+ font = (nsFontXft *)mLoadedFonts.ElementAt(j);
+- if (font->HasChar(c)) {
++ if (font->HasChar(c) && font->GetXftFont()) {
+ currFont = font;
+ goto FoundFont; // for speed -- avoid "if" statement
+ }
+@@ -1922,6 +1923,7 @@
+ FcPatternReference(mFontName);
+
+ mXftFont = nsnull;
++ mNotXft = 0;
+
+ // set up our charset
+ mCharset = nsnull;
+@@ -1948,7 +1950,7 @@
+ XftFont *
+ nsFontXft::GetXftFont(void)
+ {
+- if (!mXftFont) {
++ if (!mXftFont && !mNotXft) {
+ FcPattern *pat = FcFontRenderPrepare(0, mPattern, mFontName);
+ if (!pat)
+ return nsnull;
+@@ -1967,8 +1969,10 @@
+ FcPatternDel(pat, FC_SPACING);
+
+ mXftFont = XftFontOpenPattern(GDK_DISPLAY(), pat);
+- if (!mXftFont)
++ if (!mXftFont) {
+ FcPatternDestroy(pat);
++ mNotXft = 1;
++ }
+ }
+
+ return mXftFont;
diff --git a/www/firefox10/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp b/www/firefox10/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp
new file mode 100644
index 000000000000..0b0e08247101
--- /dev/null
+++ b/www/firefox10/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp
@@ -0,0 +1,57 @@
+--- gfx/src/gtk/nsFontMetricsXft.cpp.save Thu Aug 7 12:14:49 2003
++++ gfx/src/gtk/nsFontMetricsXft.cpp Thu Aug 7 12:33:45 2003
+@@ -106,6 +106,7 @@
+ FcPattern *mPattern;
+ FcPattern *mFontName;
+ FcCharSet *mCharset;
++ int mNotXft;
+ };
+
+ class nsFontXftInfo;
+@@ -1051,7 +1052,7 @@
+ // font in our loaded list that supports the character
+ for (PRInt32 i = 0, end = mLoadedFonts.Count(); i < end; ++i) {
+ nsFontXft *font = (nsFontXft *)mLoadedFonts.ElementAt(i);
+- if (font->HasChar(PRUint32(aChar)))
++ if (font->HasChar(PRUint32(aChar)) && font->GetXftFont())
+ return font;
+ }
+
+@@ -1492,7 +1493,7 @@
+ // this character.
+ for (PRInt32 j = 0, end = mLoadedFonts.Count(); j < end; ++j) {
+ font = (nsFontXft *)mLoadedFonts.ElementAt(j);
+- if (font->HasChar(c)) {
++ if (font->HasChar(c) && font->GetXftFont()) {
+ currFont = font;
+ goto FoundFont; // for speed -- avoid "if" statement
+ }
+@@ -1922,6 +1923,7 @@
+ FcPatternReference(mFontName);
+
+ mXftFont = nsnull;
++ mNotXft = 0;
+
+ // set up our charset
+ mCharset = nsnull;
+@@ -1948,7 +1950,7 @@
+ XftFont *
+ nsFontXft::GetXftFont(void)
+ {
+- if (!mXftFont) {
++ if (!mXftFont && !mNotXft) {
+ FcPattern *pat = FcFontRenderPrepare(0, mPattern, mFontName);
+ if (!pat)
+ return nsnull;
+@@ -1967,8 +1969,10 @@
+ FcPatternDel(pat, FC_SPACING);
+
+ mXftFont = XftFontOpenPattern(GDK_DISPLAY(), pat);
+- if (!mXftFont)
++ if (!mXftFont) {
+ FcPatternDestroy(pat);
++ mNotXft = 1;
++ }
+ }
+
+ return mXftFont;
diff --git a/www/firefox15/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp b/www/firefox15/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp
new file mode 100644
index 000000000000..0b0e08247101
--- /dev/null
+++ b/www/firefox15/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp
@@ -0,0 +1,57 @@
+--- gfx/src/gtk/nsFontMetricsXft.cpp.save Thu Aug 7 12:14:49 2003
++++ gfx/src/gtk/nsFontMetricsXft.cpp Thu Aug 7 12:33:45 2003
+@@ -106,6 +106,7 @@
+ FcPattern *mPattern;
+ FcPattern *mFontName;
+ FcCharSet *mCharset;
++ int mNotXft;
+ };
+
+ class nsFontXftInfo;
+@@ -1051,7 +1052,7 @@
+ // font in our loaded list that supports the character
+ for (PRInt32 i = 0, end = mLoadedFonts.Count(); i < end; ++i) {
+ nsFontXft *font = (nsFontXft *)mLoadedFonts.ElementAt(i);
+- if (font->HasChar(PRUint32(aChar)))
++ if (font->HasChar(PRUint32(aChar)) && font->GetXftFont())
+ return font;
+ }
+
+@@ -1492,7 +1493,7 @@
+ // this character.
+ for (PRInt32 j = 0, end = mLoadedFonts.Count(); j < end; ++j) {
+ font = (nsFontXft *)mLoadedFonts.ElementAt(j);
+- if (font->HasChar(c)) {
++ if (font->HasChar(c) && font->GetXftFont()) {
+ currFont = font;
+ goto FoundFont; // for speed -- avoid "if" statement
+ }
+@@ -1922,6 +1923,7 @@
+ FcPatternReference(mFontName);
+
+ mXftFont = nsnull;
++ mNotXft = 0;
+
+ // set up our charset
+ mCharset = nsnull;
+@@ -1948,7 +1950,7 @@
+ XftFont *
+ nsFontXft::GetXftFont(void)
+ {
+- if (!mXftFont) {
++ if (!mXftFont && !mNotXft) {
+ FcPattern *pat = FcFontRenderPrepare(0, mPattern, mFontName);
+ if (!pat)
+ return nsnull;
+@@ -1967,8 +1969,10 @@
+ FcPatternDel(pat, FC_SPACING);
+
+ mXftFont = XftFontOpenPattern(GDK_DISPLAY(), pat);
+- if (!mXftFont)
++ if (!mXftFont) {
+ FcPatternDestroy(pat);
++ mNotXft = 1;
++ }
+ }
+
+ return mXftFont;
diff --git a/www/firefox3-devel/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp b/www/firefox3-devel/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp
new file mode 100644
index 000000000000..0b0e08247101
--- /dev/null
+++ b/www/firefox3-devel/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp
@@ -0,0 +1,57 @@
+--- gfx/src/gtk/nsFontMetricsXft.cpp.save Thu Aug 7 12:14:49 2003
++++ gfx/src/gtk/nsFontMetricsXft.cpp Thu Aug 7 12:33:45 2003
+@@ -106,6 +106,7 @@
+ FcPattern *mPattern;
+ FcPattern *mFontName;
+ FcCharSet *mCharset;
++ int mNotXft;
+ };
+
+ class nsFontXftInfo;
+@@ -1051,7 +1052,7 @@
+ // font in our loaded list that supports the character
+ for (PRInt32 i = 0, end = mLoadedFonts.Count(); i < end; ++i) {
+ nsFontXft *font = (nsFontXft *)mLoadedFonts.ElementAt(i);
+- if (font->HasChar(PRUint32(aChar)))
++ if (font->HasChar(PRUint32(aChar)) && font->GetXftFont())
+ return font;
+ }
+
+@@ -1492,7 +1493,7 @@
+ // this character.
+ for (PRInt32 j = 0, end = mLoadedFonts.Count(); j < end; ++j) {
+ font = (nsFontXft *)mLoadedFonts.ElementAt(j);
+- if (font->HasChar(c)) {
++ if (font->HasChar(c) && font->GetXftFont()) {
+ currFont = font;
+ goto FoundFont; // for speed -- avoid "if" statement
+ }
+@@ -1922,6 +1923,7 @@
+ FcPatternReference(mFontName);
+
+ mXftFont = nsnull;
++ mNotXft = 0;
+
+ // set up our charset
+ mCharset = nsnull;
+@@ -1948,7 +1950,7 @@
+ XftFont *
+ nsFontXft::GetXftFont(void)
+ {
+- if (!mXftFont) {
++ if (!mXftFont && !mNotXft) {
+ FcPattern *pat = FcFontRenderPrepare(0, mPattern, mFontName);
+ if (!pat)
+ return nsnull;
+@@ -1967,8 +1969,10 @@
+ FcPatternDel(pat, FC_SPACING);
+
+ mXftFont = XftFontOpenPattern(GDK_DISPLAY(), pat);
+- if (!mXftFont)
++ if (!mXftFont) {
+ FcPatternDestroy(pat);
++ mNotXft = 1;
++ }
+ }
+
+ return mXftFont;
diff --git a/www/firefox35/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp b/www/firefox35/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp
new file mode 100644
index 000000000000..0b0e08247101
--- /dev/null
+++ b/www/firefox35/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp
@@ -0,0 +1,57 @@
+--- gfx/src/gtk/nsFontMetricsXft.cpp.save Thu Aug 7 12:14:49 2003
++++ gfx/src/gtk/nsFontMetricsXft.cpp Thu Aug 7 12:33:45 2003
+@@ -106,6 +106,7 @@
+ FcPattern *mPattern;
+ FcPattern *mFontName;
+ FcCharSet *mCharset;
++ int mNotXft;
+ };
+
+ class nsFontXftInfo;
+@@ -1051,7 +1052,7 @@
+ // font in our loaded list that supports the character
+ for (PRInt32 i = 0, end = mLoadedFonts.Count(); i < end; ++i) {
+ nsFontXft *font = (nsFontXft *)mLoadedFonts.ElementAt(i);
+- if (font->HasChar(PRUint32(aChar)))
++ if (font->HasChar(PRUint32(aChar)) && font->GetXftFont())
+ return font;
+ }
+
+@@ -1492,7 +1493,7 @@
+ // this character.
+ for (PRInt32 j = 0, end = mLoadedFonts.Count(); j < end; ++j) {
+ font = (nsFontXft *)mLoadedFonts.ElementAt(j);
+- if (font->HasChar(c)) {
++ if (font->HasChar(c) && font->GetXftFont()) {
+ currFont = font;
+ goto FoundFont; // for speed -- avoid "if" statement
+ }
+@@ -1922,6 +1923,7 @@
+ FcPatternReference(mFontName);
+
+ mXftFont = nsnull;
++ mNotXft = 0;
+
+ // set up our charset
+ mCharset = nsnull;
+@@ -1948,7 +1950,7 @@
+ XftFont *
+ nsFontXft::GetXftFont(void)
+ {
+- if (!mXftFont) {
++ if (!mXftFont && !mNotXft) {
+ FcPattern *pat = FcFontRenderPrepare(0, mPattern, mFontName);
+ if (!pat)
+ return nsnull;
+@@ -1967,8 +1969,10 @@
+ FcPatternDel(pat, FC_SPACING);
+
+ mXftFont = XftFontOpenPattern(GDK_DISPLAY(), pat);
+- if (!mXftFont)
++ if (!mXftFont) {
+ FcPatternDestroy(pat);
++ mNotXft = 1;
++ }
+ }
+
+ return mXftFont;
diff --git a/www/firefox36/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp b/www/firefox36/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp
new file mode 100644
index 000000000000..0b0e08247101
--- /dev/null
+++ b/www/firefox36/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp
@@ -0,0 +1,57 @@
+--- gfx/src/gtk/nsFontMetricsXft.cpp.save Thu Aug 7 12:14:49 2003
++++ gfx/src/gtk/nsFontMetricsXft.cpp Thu Aug 7 12:33:45 2003
+@@ -106,6 +106,7 @@
+ FcPattern *mPattern;
+ FcPattern *mFontName;
+ FcCharSet *mCharset;
++ int mNotXft;
+ };
+
+ class nsFontXftInfo;
+@@ -1051,7 +1052,7 @@
+ // font in our loaded list that supports the character
+ for (PRInt32 i = 0, end = mLoadedFonts.Count(); i < end; ++i) {
+ nsFontXft *font = (nsFontXft *)mLoadedFonts.ElementAt(i);
+- if (font->HasChar(PRUint32(aChar)))
++ if (font->HasChar(PRUint32(aChar)) && font->GetXftFont())
+ return font;
+ }
+
+@@ -1492,7 +1493,7 @@
+ // this character.
+ for (PRInt32 j = 0, end = mLoadedFonts.Count(); j < end; ++j) {
+ font = (nsFontXft *)mLoadedFonts.ElementAt(j);
+- if (font->HasChar(c)) {
++ if (font->HasChar(c) && font->GetXftFont()) {
+ currFont = font;
+ goto FoundFont; // for speed -- avoid "if" statement
+ }
+@@ -1922,6 +1923,7 @@
+ FcPatternReference(mFontName);
+
+ mXftFont = nsnull;
++ mNotXft = 0;
+
+ // set up our charset
+ mCharset = nsnull;
+@@ -1948,7 +1950,7 @@
+ XftFont *
+ nsFontXft::GetXftFont(void)
+ {
+- if (!mXftFont) {
++ if (!mXftFont && !mNotXft) {
+ FcPattern *pat = FcFontRenderPrepare(0, mPattern, mFontName);
+ if (!pat)
+ return nsnull;
+@@ -1967,8 +1969,10 @@
+ FcPatternDel(pat, FC_SPACING);
+
+ mXftFont = XftFontOpenPattern(GDK_DISPLAY(), pat);
+- if (!mXftFont)
++ if (!mXftFont) {
+ FcPatternDestroy(pat);
++ mNotXft = 1;
++ }
+ }
+
+ return mXftFont;
diff --git a/www/flock/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp b/www/flock/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp
new file mode 100644
index 000000000000..0b0e08247101
--- /dev/null
+++ b/www/flock/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp
@@ -0,0 +1,57 @@
+--- gfx/src/gtk/nsFontMetricsXft.cpp.save Thu Aug 7 12:14:49 2003
++++ gfx/src/gtk/nsFontMetricsXft.cpp Thu Aug 7 12:33:45 2003
+@@ -106,6 +106,7 @@
+ FcPattern *mPattern;
+ FcPattern *mFontName;
+ FcCharSet *mCharset;
++ int mNotXft;
+ };
+
+ class nsFontXftInfo;
+@@ -1051,7 +1052,7 @@
+ // font in our loaded list that supports the character
+ for (PRInt32 i = 0, end = mLoadedFonts.Count(); i < end; ++i) {
+ nsFontXft *font = (nsFontXft *)mLoadedFonts.ElementAt(i);
+- if (font->HasChar(PRUint32(aChar)))
++ if (font->HasChar(PRUint32(aChar)) && font->GetXftFont())
+ return font;
+ }
+
+@@ -1492,7 +1493,7 @@
+ // this character.
+ for (PRInt32 j = 0, end = mLoadedFonts.Count(); j < end; ++j) {
+ font = (nsFontXft *)mLoadedFonts.ElementAt(j);
+- if (font->HasChar(c)) {
++ if (font->HasChar(c) && font->GetXftFont()) {
+ currFont = font;
+ goto FoundFont; // for speed -- avoid "if" statement
+ }
+@@ -1922,6 +1923,7 @@
+ FcPatternReference(mFontName);
+
+ mXftFont = nsnull;
++ mNotXft = 0;
+
+ // set up our charset
+ mCharset = nsnull;
+@@ -1948,7 +1950,7 @@
+ XftFont *
+ nsFontXft::GetXftFont(void)
+ {
+- if (!mXftFont) {
++ if (!mXftFont && !mNotXft) {
+ FcPattern *pat = FcFontRenderPrepare(0, mPattern, mFontName);
+ if (!pat)
+ return nsnull;
+@@ -1967,8 +1969,10 @@
+ FcPatternDel(pat, FC_SPACING);
+
+ mXftFont = XftFontOpenPattern(GDK_DISPLAY(), pat);
+- if (!mXftFont)
++ if (!mXftFont) {
+ FcPatternDestroy(pat);
++ mNotXft = 1;
++ }
+ }
+
+ return mXftFont;
diff --git a/www/mozilla-firebird/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp b/www/mozilla-firebird/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp
new file mode 100644
index 000000000000..0b0e08247101
--- /dev/null
+++ b/www/mozilla-firebird/files/patch-gfx_src_gtk_nsFontMetricsXft.cpp
@@ -0,0 +1,57 @@
+--- gfx/src/gtk/nsFontMetricsXft.cpp.save Thu Aug 7 12:14:49 2003
++++ gfx/src/gtk/nsFontMetricsXft.cpp Thu Aug 7 12:33:45 2003
+@@ -106,6 +106,7 @@
+ FcPattern *mPattern;
+ FcPattern *mFontName;
+ FcCharSet *mCharset;
++ int mNotXft;
+ };
+
+ class nsFontXftInfo;
+@@ -1051,7 +1052,7 @@
+ // font in our loaded list that supports the character
+ for (PRInt32 i = 0, end = mLoadedFonts.Count(); i < end; ++i) {
+ nsFontXft *font = (nsFontXft *)mLoadedFonts.ElementAt(i);
+- if (font->HasChar(PRUint32(aChar)))
++ if (font->HasChar(PRUint32(aChar)) && font->GetXftFont())
+ return font;
+ }
+
+@@ -1492,7 +1493,7 @@
+ // this character.
+ for (PRInt32 j = 0, end = mLoadedFonts.Count(); j < end; ++j) {
+ font = (nsFontXft *)mLoadedFonts.ElementAt(j);
+- if (font->HasChar(c)) {
++ if (font->HasChar(c) && font->GetXftFont()) {
+ currFont = font;
+ goto FoundFont; // for speed -- avoid "if" statement
+ }
+@@ -1922,6 +1923,7 @@
+ FcPatternReference(mFontName);
+
+ mXftFont = nsnull;
++ mNotXft = 0;
+
+ // set up our charset
+ mCharset = nsnull;
+@@ -1948,7 +1950,7 @@
+ XftFont *
+ nsFontXft::GetXftFont(void)
+ {
+- if (!mXftFont) {
++ if (!mXftFont && !mNotXft) {
+ FcPattern *pat = FcFontRenderPrepare(0, mPattern, mFontName);
+ if (!pat)
+ return nsnull;
+@@ -1967,8 +1969,10 @@
+ FcPatternDel(pat, FC_SPACING);
+
+ mXftFont = XftFontOpenPattern(GDK_DISPLAY(), pat);
+- if (!mXftFont)
++ if (!mXftFont) {
+ FcPatternDestroy(pat);
++ mNotXft = 1;
++ }
+ }
+
+ return mXftFont;