Working around dynamic linker restrictions on hp/macosx. r=dbaron/sr=brendan.

bug# 93479
This commit is contained in:
pinkerton%netscape.com 2001-08-03 20:54:25 +00:00
parent 59b5e92958
commit 7023f82c01
2 changed files with 12 additions and 4 deletions

View File

@ -230,6 +230,9 @@ static const char magic[] = MFL_FILE_MAGIC;
// -------------------------- nsFastLoadFileReader -------------------------- // -------------------------- nsFastLoadFileReader --------------------------
nsID nsFastLoadFileReader::nsFastLoadFooter::gDummyID;
nsFastLoadFileReader::nsObjectMapEntry nsFastLoadFileReader::nsFastLoadFooter::gDummySharpObjectEntry;
NS_IMPL_ISUPPORTS_INHERITED3(nsFastLoadFileReader, NS_IMPL_ISUPPORTS_INHERITED3(nsFastLoadFileReader,
nsBinaryInputStream, nsBinaryInputStream,
nsIObjectInputStream, nsIObjectInputStream,

View File

@ -299,22 +299,27 @@ class NS_COM nsFastLoadFileReader
PL_DHashTableFinish(&mURIMap); PL_DHashTableFinish(&mURIMap);
} }
// These can't be static within GetID and GetSharpObjectEntry or the
// toolchains on HP-UX 10.20's, RH 7.0, and Mac OS X all barf at link
// time ("common symbols not allowed with MY_DHLIB output format", to
// quote the OS X rev of gcc).
static nsID gDummyID;
static nsObjectMapEntry gDummySharpObjectEntry;
const nsID& GetID(NSFastLoadID aFastId) const { const nsID& GetID(NSFastLoadID aFastId) const {
static nsID dummy;
PRUint32 index = aFastId - 1; PRUint32 index = aFastId - 1;
NS_ASSERTION(index < mNumIDs, "aFastId out of range"); NS_ASSERTION(index < mNumIDs, "aFastId out of range");
if (index >= mNumIDs) if (index >= mNumIDs)
return dummy; return gDummyID;
return mIDMap[index]; return mIDMap[index];
} }
nsObjectMapEntry& nsObjectMapEntry&
GetSharpObjectEntry(NSFastLoadOID aOID) const { GetSharpObjectEntry(NSFastLoadOID aOID) const {
static nsObjectMapEntry dummy;
PRUint32 index = MFL_OID_TO_SHARP_INDEX(aOID); PRUint32 index = MFL_OID_TO_SHARP_INDEX(aOID);
NS_ASSERTION(index < mNumSharpObjects, "aOID out of range"); NS_ASSERTION(index < mNumSharpObjects, "aOID out of range");
if (index >= mNumSharpObjects) if (index >= mNumSharpObjects)
return dummy; return gDummySharpObjectEntry;
return mObjectMap[index]; return mObjectMap[index];
} }