This GTK+v2 build of Mozilla 1.7a was produced on a sparc-sun-solaris2.8 platform. If you encounter any problem with the package, you may contact Roland Mainz This build was made from the MOZILLA_1_7a_RELEASE tag in the CVS repository. Installation notes: * This build requires the GTK+v2 toolkit as used by the Solaris Gnome Desktop. You have to install Solaris Gnome Desktop as available from http://www.sun.com/software/gnome/ THIS BUILD WILL _NOT_ WORK WITHOUT the Solaris Gnome Desktop being installed. If you do not have Solaris Gnome installed you may use the Mozilla GTK+v1 build available under http://ftp.mozilla.org/pub/mozilla.org/mozilla/releases/mozilla1.7a/mozilla-sparc-sun-solaris2.8-1.7a.tar.gz * A full list of installation requirements can be found in the 1.7a release notes (http://www.mozilla.org/releases/mozilla1.7a/installation-ports.html#ports_solaris). * Please make sure you have all the REQUIRED patches and packages (as listed in http://www.mozilla.org/releases/mozilla1.7a/installation-ports.html#ports_solaris) installed _before_ starting Mozilla. * This build does not include the Java bundle. You will need to set up the link yourself in order to have Java support. See example below: $ cd /plugins $ ln -s /jre/plugin/sparc/ns610/libjavaplugin_oji.so You can install the latest version of Java from http://java.sun.com At least Java 1.4.x is required. * Printing is supported via Xprint (see http://www.mozilla.org/releases/mozilla1.4rc3/index.html#xprint) xprint.mozdev.org provides various Solaris packages including "GISWxprint" and "GISWxprintglue", for people without (root) permission to install packages the plain tarballs are provided, an alternative prodecure is described in Sun InfoDoc #ID71966 about the same issue (see http://sunsolve.sun.com/pub-cgi/retrieve.pl?doc=finfodoc%2F71966 - "How to add printers to Netscape[TM] and Mozilla[TM]?"). * Error messages like -- snip --- ld.so.1: ./mozilla-bin: fatal: relocation error: file ./mozilla-bin: symbol gtk_init: referenced symbol not found Killed -- snip --- indicate that the runtime linker was not able to find the GTK+v2 libraries which are part of the Solaris Gnome desktop distribution. Please install the Solaris Gnome desktop before using this build. * If you get a lot of warnings on startup like -- snip -- Gdk-WARNING **: shmat failed! -- snip -- then you may want to increase your shared memory segment sizes. On Solaris 2.7/2.8/2.9, you can add the following lines to /etc/system and reboot: -- snip -- * Set for Gnome libGDK shared memory usage set shmsys:shminfo_shmmax = 8388608 set shmsys:shminfo_shmmni = 0x1000 set shmsys:shminfo_shmseg = 0x100 -- snip -- * Build details can be obtained via about:buildconfig * When installing this package in a system-wide read-only location you may want to do the following procedure to ensure that Mozilla works for all users: % umask 022 % cd mozilla % ./run-mozilla.sh ./regxpcom % ./run-mozilla.sh ./regchrome % chmod -R og=u,a-w . * The following source patch was applied to the source to cure two bugs which were fixed after the mozilla1.7a release: - http://bugzilla.mozilla.org/show_bug.cgi?id=188288 - "[patch] caret movement erratic with CTL enabled" - http://bugzilla.mozilla.org/show_bug.cgi?id=235913 - "Random crashes while printing on Solaris" -- snip -- Index: layout/html/base/src/nsTextFrame.cpp =================================================================== RCS file: /cvsroot/mozilla/layout/html/base/src/nsTextFrame.cpp,v retrieving revision 1.452 diff -u -r1.452 nsTextFrame.cpp --- layout/html/base/src/nsTextFrame.cpp 20 Feb 2004 21:37:53 -0000 1.452 +++ layout/html/base/src/nsTextFrame.cpp 23 Feb 2004 03:01:47 -0000 @@ -2313,27 +2313,32 @@ #ifdef SUNCTL static NS_DEFINE_CID(kLECID, NS_ULE_CID); - nsCOMPtr mCtlObj; - mCtlObj = do_CreateInstance(kLECID, &rv); + nsCOMPtr ctlObj; + ctlObj = do_CreateInstance(kLECID, &rv); if (NS_FAILED(rv)) { NS_WARNING("Cell based cursor movement will not be supported\n"); - mCtlObj = nsnull; + ctlObj = nsnull; } else { - PRInt32 mStart, mEnd; + PRInt32 start, end; + PRBool needsCTL = PR_FALSE; - if (sdptr->mEnd < textLength) { - mCtlObj->GetRangeOfCluster(text, PRInt32(textLength), sdptr->mEnd, &mStart, &mEnd); + ctlObj->NeedsCTLFix(text, sdptr->mStart, sdptr->mEnd, &needsCTL); + + if (needsCTL && (sdptr->mEnd < textLength)) { + ctlObj->GetRangeOfCluster(text, PRInt32(textLength), sdptr->mEnd, + &start, &end); if (sdptr->mStart > sdptr->mEnd) /* Left Edge */ - sdptr->mEnd = mStart; + sdptr->mEnd = start; else - sdptr->mEnd = mEnd; + sdptr->mEnd = end; } /* Always start selection from a Right Edge */ - if (sdptr->mStart > 0) { - mCtlObj->GetRangeOfCluster(text, PRInt32(textLength), sdptr->mStart, &mStart, &mEnd); - sdptr->mStart = mEnd; + if (needsCTL && (sdptr->mStart > 0)) { + ctlObj->GetRangeOfCluster(text, PRInt32(textLength), + sdptr->mStart, &start, &end); + sdptr->mStart = end; } } #endif /* SUNCTL */ @@ -3984,15 +3989,7 @@ #endif aPos->mContentOffset = 0; PRInt32 i; - #ifdef SUNCTL - static NS_DEFINE_CID(kLECID, NS_ULE_CID); - nsCOMPtr mCtlObj; - mCtlObj = do_CreateInstance(kLECID, &rv); - if (NS_FAILED(rv)) { - NS_WARNING("Cell based cursor movement will not be supported\n"); - mCtlObj = nsnull; - #endif /* SUNCTL */ for (i = aPos->mStartOffset -1 - mContentOffset; i >=0; i--){ if ((ip[i] < ip[aPos->mStartOffset - mContentOffset]) && (! IS_LOW_SURROGATE(paintBuffer.mBuffer[ip[i]-mContentOffset]))) @@ -4001,18 +3998,30 @@ break; } } + #ifdef SUNCTL + static NS_DEFINE_CID(kLECID, NS_ULE_CID); + + nsCOMPtr ctlObj; + ctlObj = do_CreateInstance(kLECID, &rv); + if (NS_FAILED(rv)) { + NS_WARNING("Cell based cursor movement will not be supported\n"); + ctlObj = nsnull; } else { - if (aPos->mStartOffset < 1) { - // go to prev - i = -1; - } else { - PRInt32 mPreviousOffset; - mCtlObj->PrevCluster(NS_REINTERPRET_CAST(const PRUnichar*, paintBuffer.mBuffer), - textLength,aPos->mStartOffset, - &mPreviousOffset); - aPos->mContentOffset = i = mPreviousOffset; + PRBool needsCTL = PR_FALSE; + PRInt32 previousOffset; + + ctlObj->NeedsCTLFix(NS_REINTERPRET_CAST(const PRUnichar*, + paintBuffer.mBuffer), + aPos->mStartOffset, -1, &needsCTL); + + if (needsCTL) { + ctlObj->PrevCluster(NS_REINTERPRET_CAST(const PRUnichar*, + paintBuffer.mBuffer), + textLength,aPos->mStartOffset, + &previousOffset); + aPos->mContentOffset = i = previousOffset; } } #endif /* SUNCTL */ @@ -4032,15 +4041,6 @@ #endif PRInt32 i; aPos->mContentOffset = mContentLength; - #ifdef SUNCTL - static NS_DEFINE_CID(kLECID, NS_ULE_CID); - - nsCOMPtr mCtlObj; - mCtlObj = do_CreateInstance(kLECID, &rv); - if (NS_FAILED(rv)) { - NS_WARNING("Cell based cursor movement will not be supported\n"); - mCtlObj = nsnull; - #endif /* SUNCTL */ for (i = aPos->mStartOffset +1 - mContentOffset; i <= mContentLength; i++){ if ((ip[i] > ip[aPos->mStartOffset - mContentOffset]) && @@ -4051,17 +4051,29 @@ } } #ifdef SUNCTL + static NS_DEFINE_CID(kLECID, NS_ULE_CID); + + nsCOMPtr ctlObj; + ctlObj = do_CreateInstance(kLECID, &rv); + if (NS_FAILED(rv)) { + NS_WARNING("Cell based cursor movement will not be supported\n"); + ctlObj = nsnull; } else { - if (aPos->mStartOffset >= textLength) { - // go to next - i = mContentLength + 1; - } else { - PRInt32 mNextOffset; - mCtlObj->NextCluster(NS_REINTERPRET_CAST(const PRUnichar*, paintBuffer.mBuffer), - textLength, aPos->mStartOffset, - &mNextOffset); - aPos->mContentOffset = i = mNextOffset; + PRBool needsCTL = PR_FALSE; + PRInt32 nextOffset; + + ctlObj->NeedsCTLFix(NS_REINTERPRET_CAST(const PRUnichar*, + paintBuffer.mBuffer), + aPos->mStartOffset, 0, &needsCTL); + + if (needsCTL) { + + ctlObj->NextCluster(NS_REINTERPRET_CAST(const PRUnichar*, + paintBuffer.mBuffer), + textLength, aPos->mStartOffset, + &nextOffset); + aPos->mContentOffset = i = nextOffset; } } #endif /* SUNCTL */ @@ -4087,7 +4099,7 @@ return result; } } - else + else aPos->mResultContent = mContent; } break; Index: gfx/src/xlib/nsFontMetricsXlib.cpp =================================================================== RCS file: /cvsroot/mozilla/gfx/src/xlib/nsFontMetricsXlib.cpp,v retrieving revision 1.162 diff -u -r1.162 nsFontMetricsXlib.cpp --- gfx/src/xlib/nsFontMetricsXlib.cpp 5 Feb 2004 01:57:06 -0000 1.162 +++ gfx/src/xlib/nsFontMetricsXlib.cpp 29 Feb 2004 22:50:25 -0000 @@ -1248,7 +1248,8 @@ if (NS_SUCCEEDED(rv)) mAllowDoubleByteSpecialChars = val; - PRUint32 dbmapSize = sizeof(gDoubleByteSpecialCharsCCMap); + /* Make sure we allocate/copy enougth (see http://bugzilla.mozilla.org/show_bug.cgi?id=235913#c12)*/ + PRUint32 dbmapSize = sizeof(gDoubleByteSpecialCharsCCMapUnion); mDoubleByteSpecialCharsCCMap = (PRUint16*)PR_Malloc(dbmapSize); if (!mDoubleByteSpecialCharsCCMap) return NS_ERROR_OUT_OF_MEMORY; -- snip -- -- __ . . __ (o.\ \/ /.o) roland.mainz@nrubsig.org \__\/\/__/ MPEG specialist, C&&JAVA&&Sun&&Unix programmer /O /==\ O\ TEL +49 2426 901568 FAX +49 2426 901569 (;O/ \/ \O;)