diff --git a/mozilla/xpcom/base/nsAllocator.cpp b/mozilla/xpcom/base/nsAllocator.cpp index 776374f5907..99f8b1ebe3e 100644 --- a/mozilla/xpcom/base/nsAllocator.cpp +++ b/mozilla/xpcom/base/nsAllocator.cpp @@ -165,7 +165,15 @@ void* nsAllocator::Clone(const void* ptr, PRUint32 size) void* p = mAllocator->Alloc(size); if(p) memcpy(p, ptr, size); return p; -} +} + +NS_EXPORT nsIAllocator* +nsAllocator::GetGlobalAllocator() +{ + if(!EnsureAllocator()) return nsnull; + NS_ADDREF(mAllocator); + return mAllocator; +} // private: diff --git a/mozilla/xpcom/base/nsIAllocator.h b/mozilla/xpcom/base/nsIAllocator.h index 0f5ddd37797..c458d036232 100644 --- a/mozilla/xpcom/base/nsIAllocator.h +++ b/mozilla/xpcom/base/nsIAllocator.h @@ -95,6 +95,7 @@ public: static NS_EXPORT void Free(void* ptr); static NS_EXPORT void HeapMinimize(); static NS_EXPORT void* Clone(const void* ptr, PRUint32 size); + static NS_EXPORT nsIAllocator* GetGlobalAllocator(); private: nsAllocator(); // not implemented static PRBool EnsureAllocator() {return mAllocator || FetchAllocator();}