summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsdagley%netscape.com <devnull@localhost>2001-07-25 03:20:12 +0000
committersdagley%netscape.com <devnull@localhost>2001-07-25 03:20:12 +0000
commit826d35d3fafca3d2f100ae8b03445d3858946177 (patch)
tree546c673f50b6ecc224d3fa556ae13244efb9b6ed
parent4979daaea5982de31fa5b83cdcd4272bc6e6bce7 (diff)
downloadnspr-hg-826d35d3fafca3d2f100ae8b03445d3858946177.tar.gz
Checking in beard's fix for bug #81659 from the 0.9.2 branch onto NSPR tip, r=pinkerton, sr=scc.
-rw-r--r--pr/src/linking/prlink.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/pr/src/linking/prlink.c b/pr/src/linking/prlink.c
index c9603fd4..a7df17ca 100644
--- a/pr/src/linking/prlink.c
+++ b/pr/src/linking/prlink.c
@@ -117,6 +117,8 @@ struct PRLibrary {
#if TARGET_CARBON
CFBundleRef bundle;
#endif
+
+ Ptr main;
#endif
#ifdef XP_UNIX
@@ -605,7 +607,6 @@ pr_LoadLibraryByPathname(const char *name, PRIntn flags)
#if defined(XP_MAC) && TARGET_RT_MAC_CFM
{
OSErr err;
- Ptr main;
CFragConnectionID connectionID;
Str255 errName;
Str255 pName;
@@ -652,10 +653,10 @@ pr_LoadLibraryByPathname(const char *name, PRIntn flags)
* plugins, but those should go in the Extensions folder anyhow.
*/
#if 0
- err = NSGetSharedLibrary(pName, &connectionID, &main);
+ err = NSGetSharedLibrary(pName, &connectionID, &lm->main);
#else
err = GetSharedLibrary(pName, kCompiledCFragArch, kReferenceCFrag,
- &connectionID, &main, errName);
+ &connectionID, &lm->main, errName);
#endif
if (err != noErr)
{
@@ -703,7 +704,7 @@ pr_LoadLibraryByPathname(const char *name, PRIntn flags)
/* Finally, try to load the library */
err = GetDiskFragment(&fileSpec, 0, kCFragGoesToEOF, fileSpec.name,
- kLoadCFrag, &connectionID, &main, errName);
+ kLoadCFrag, &connectionID, &lm->main, errName);
memcpy(cName, fileSpec.name + 1, fileSpec.name[0]);
cName[fileSpec.name[0]] = '\0';
@@ -1201,6 +1202,8 @@ pr_FindSymbolInLib(PRLibrary *lm, const char *name)
PStrFromCStr(name, pName);
f = (NSFindSymbol(lm->dlh, pName, &symAddr, &symClass) == noErr) ? symAddr : NULL;
+
+ if (f == NULL && strcmp(name, "main") == 0) f = lm->main;
}
#endif /* XP_MAC */