diff --git a/mozilla/extensions/java/xpcom/nsAppFileLocProviderProxy.cpp b/mozilla/extensions/java/xpcom/nsAppFileLocProviderProxy.cpp index d0e90f46dd8..ff4bd56fe81 100644 --- a/mozilla/extensions/java/xpcom/nsAppFileLocProviderProxy.cpp +++ b/mozilla/extensions/java/xpcom/nsAppFileLocProviderProxy.cpp @@ -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; +} + diff --git a/mozilla/extensions/java/xpcom/nsAppFileLocProviderProxy.h b/mozilla/extensions/java/xpcom/nsAppFileLocProviderProxy.h index 4c3ca515069..d3b90880d6c 100644 --- a/mozilla/extensions/java/xpcom/nsAppFileLocProviderProxy.h +++ b/mozilla/extensions/java/xpcom/nsAppFileLocProviderProxy.h @@ -56,5 +56,10 @@ private: jobject mJavaLocProvider; }; +extern "C" nsresult +NS_NewAppFileLocProviderProxy(jobject aJavaLocProvider, + nsIDirectoryServiceProvider** aResult); + + #endif //_nsAppFileLocProviderProxy_h_ diff --git a/mozilla/extensions/java/xpcom/nsJavaInterfaces.cpp b/mozilla/extensions/java/xpcom/nsJavaInterfaces.cpp index ed6e0d2f470..2b0e86f5ef2 100644 --- a/mozilla/extensions/java/xpcom/nsJavaInterfaces.cpp +++ b/mozilla/extensions/java/xpcom/nsJavaInterfaces.cpp @@ -69,18 +69,15 @@ InitEmbedding_Impl(JNIEnv* env, jobject aMozBinDirectory, } // create nsAppFileLocProviderProxy from given Java object - nsAppFileLocProviderProxy* provider = nsnull; + nsCOMPtr 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