Fix for plugins stop working on Mac bug 90959 r=av sr=attinasi

This commit is contained in:
peterlubczynski%netscape.com 2001-07-18 14:04:28 +00:00
parent 04dd6715b8
commit b4f2f62fe4
8 changed files with 42 additions and 2 deletions

View File

@ -688,6 +688,7 @@ nsPluginTag::nsPluginTag()
mFlags = NS_PLUGIN_FLAG_ENABLED;
mXPConnected = PR_FALSE;
mFileName = nsnull;
mFullPath = nsnull;
}
inline char* new_str(const char* str)
@ -739,6 +740,7 @@ nsPluginTag::nsPluginTag(nsPluginTag* aPluginTag)
mFlags = NS_PLUGIN_FLAG_ENABLED;
mXPConnected = PR_FALSE;
mFileName = new_str(aPluginTag->mFileName);
mFullPath = new_str(aPluginTag->mFullPath);
}
nsPluginTag::nsPluginTag(nsPluginInfo* aPluginInfo)
@ -774,6 +776,7 @@ nsPluginTag::nsPluginTag(nsPluginInfo* aPluginInfo)
}
mFileName = new_str(aPluginInfo->fFileName);
mFullPath = new_str(aPluginInfo->fFullPath);
mLibrary = nsnull;
mCanUnloadLibrary = PR_TRUE;
@ -805,6 +808,7 @@ nsPluginTag::nsPluginTag(const char* aName,
mName = new_str(aName);
mDescription = new_str(aDescription);
mFileName = new_str(aFileName);
mFullPath = new_str(aFileName);
if (mVariants) {
mMimeTypeArray = new char*[mVariants];
@ -862,6 +866,13 @@ nsPluginTag::~nsPluginTag()
delete [] mFileName;
mFileName = nsnull;
}
if(nsnull != mFullPath)
{
delete [] mFullPath;
mFullPath = nsnull;
}
}
void nsPluginTag::TryUnloadPlugin(PRBool aForceShutdown)
@ -3688,8 +3699,13 @@ NS_IMETHODIMP nsPluginHostImpl::GetPluginFactory(const char *aMimeType, nsIPlugi
if (nsnull == pluginTag->mLibrary) // if we haven't done this yet
{
#ifndef XP_MAC
nsFileSpec file(pluginTag->mFileName);
#else
if (nsnull == pluginTag->mFullPath)
return NS_ERROR_FAILURE;
nsFileSpec file(pluginTag->mFullPath);
#endif
nsPluginFile pluginFile(file);
PRLibrary* pluginLibrary = NULL;

View File

@ -84,6 +84,7 @@ public:
PRUint32 mFlags;
PRBool mXPConnected;
char *mFileName;
char *mFullPath;
};
struct nsActivePlugin

View File

@ -67,6 +67,7 @@ struct nsPluginInfo {
char** fMimeDescriptionArray;
char** fExtensionArray;
char* fFileName;
char* fFullPath;
};
/**

View File

@ -243,6 +243,7 @@ nsresult nsPluginFile::GetPluginInfo(nsPluginInfo& info)
info.fMimeDescriptionArray = new char*[variantCount];
info.fExtensionArray = new char*[variantCount];
info.fFileName = p2cstrdup(spec.name);
info.fFullPath = PL_strdup(this->GetCString());
short mimeIndex = 1, descriptionIndex = 1;
for (int i = 0; i < variantCount; i++) {
@ -274,6 +275,7 @@ nsresult nsPluginFile::FreePluginInfo(nsPluginInfo& info)
delete[] info.fMimeDescriptionArray;
delete[] info.fExtensionArray;
delete[] info.fFileName;
delete[] info.fFullPath;
}
return NS_OK;
}

View File

@ -688,6 +688,7 @@ nsPluginTag::nsPluginTag()
mFlags = NS_PLUGIN_FLAG_ENABLED;
mXPConnected = PR_FALSE;
mFileName = nsnull;
mFullPath = nsnull;
}
inline char* new_str(const char* str)
@ -739,6 +740,7 @@ nsPluginTag::nsPluginTag(nsPluginTag* aPluginTag)
mFlags = NS_PLUGIN_FLAG_ENABLED;
mXPConnected = PR_FALSE;
mFileName = new_str(aPluginTag->mFileName);
mFullPath = new_str(aPluginTag->mFullPath);
}
nsPluginTag::nsPluginTag(nsPluginInfo* aPluginInfo)
@ -774,6 +776,7 @@ nsPluginTag::nsPluginTag(nsPluginInfo* aPluginInfo)
}
mFileName = new_str(aPluginInfo->fFileName);
mFullPath = new_str(aPluginInfo->fFullPath);
mLibrary = nsnull;
mCanUnloadLibrary = PR_TRUE;
@ -805,6 +808,7 @@ nsPluginTag::nsPluginTag(const char* aName,
mName = new_str(aName);
mDescription = new_str(aDescription);
mFileName = new_str(aFileName);
mFullPath = new_str(aFileName);
if (mVariants) {
mMimeTypeArray = new char*[mVariants];
@ -862,6 +866,13 @@ nsPluginTag::~nsPluginTag()
delete [] mFileName;
mFileName = nsnull;
}
if(nsnull != mFullPath)
{
delete [] mFullPath;
mFullPath = nsnull;
}
}
void nsPluginTag::TryUnloadPlugin(PRBool aForceShutdown)
@ -3688,8 +3699,13 @@ NS_IMETHODIMP nsPluginHostImpl::GetPluginFactory(const char *aMimeType, nsIPlugi
if (nsnull == pluginTag->mLibrary) // if we haven't done this yet
{
#ifndef XP_MAC
nsFileSpec file(pluginTag->mFileName);
#else
if (nsnull == pluginTag->mFullPath)
return NS_ERROR_FAILURE;
nsFileSpec file(pluginTag->mFullPath);
#endif
nsPluginFile pluginFile(file);
PRLibrary* pluginLibrary = NULL;

View File

@ -84,6 +84,7 @@ public:
PRUint32 mFlags;
PRBool mXPConnected;
char *mFileName;
char *mFullPath;
};
struct nsActivePlugin

View File

@ -67,6 +67,7 @@ struct nsPluginInfo {
char** fMimeDescriptionArray;
char** fExtensionArray;
char* fFileName;
char* fFullPath;
};
/**

View File

@ -243,6 +243,7 @@ nsresult nsPluginFile::GetPluginInfo(nsPluginInfo& info)
info.fMimeDescriptionArray = new char*[variantCount];
info.fExtensionArray = new char*[variantCount];
info.fFileName = p2cstrdup(spec.name);
info.fFullPath = PL_strdup(this->GetCString());
short mimeIndex = 1, descriptionIndex = 1;
for (int i = 0; i < variantCount; i++) {
@ -274,6 +275,7 @@ nsresult nsPluginFile::FreePluginInfo(nsPluginInfo& info)
delete[] info.fMimeDescriptionArray;
delete[] info.fExtensionArray;
delete[] info.fFileName;
delete[] info.fFullPath;
}
return NS_OK;
}