Fix crash when calling initEmbedding with an appFileLocProvider. Don't delete the locProvider proxy after having called NS_InitEmbedding. Not part of default build. a=mkaply
git-svn-id: svn://10.0.0.236/trunk@176061 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
@@ -234,3 +234,20 @@ nsAppFileLocProviderProxy::GetFiles(const char* aProp,
|
||||
return rv;
|
||||
}
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
nsresult
|
||||
NS_NewAppFileLocProviderProxy(jobject aJavaLocProvider,
|
||||
nsIDirectoryServiceProvider** aResult)
|
||||
{
|
||||
nsAppFileLocProviderProxy* provider =
|
||||
new nsAppFileLocProviderProxy(aJavaLocProvider);
|
||||
if (provider == nsnull)
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
NS_ADDREF(provider);
|
||||
|
||||
*aResult = provider;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
@@ -56,5 +56,10 @@ private:
|
||||
jobject mJavaLocProvider;
|
||||
};
|
||||
|
||||
extern "C" nsresult
|
||||
NS_NewAppFileLocProviderProxy(jobject aJavaLocProvider,
|
||||
nsIDirectoryServiceProvider** aResult);
|
||||
|
||||
|
||||
#endif //_nsAppFileLocProviderProxy_h_
|
||||
|
||||
|
||||
@@ -69,18 +69,15 @@ InitEmbedding_Impl(JNIEnv* env, jobject aMozBinDirectory,
|
||||
}
|
||||
|
||||
// create nsAppFileLocProviderProxy from given Java object
|
||||
nsAppFileLocProviderProxy* provider = nsnull;
|
||||
nsCOMPtr<nsIDirectoryServiceProvider> provider;
|
||||
if (aAppFileLocProvider) {
|
||||
provider = new nsAppFileLocProviderProxy(aAppFileLocProvider);
|
||||
if (!provider)
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
rv = NS_NewAppFileLocProviderProxy(aAppFileLocProvider,
|
||||
getter_AddRefs(provider));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
}
|
||||
|
||||
// init Gecko
|
||||
rv = NS_InitEmbedding(directory, provider);
|
||||
if (provider) {
|
||||
delete provider;
|
||||
}
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
// init Event Queue
|
||||
|
||||
Reference in New Issue
Block a user