diff --git a/htmlparser/src/nsHTMLContentSinkStream.cpp b/htmlparser/src/nsHTMLContentSinkStream.cpp
index 25656c43dd15..de3dc281ba91 100644
--- a/htmlparser/src/nsHTMLContentSinkStream.cpp
+++ b/htmlparser/src/nsHTMLContentSinkStream.cpp
@@ -48,6 +48,8 @@ static NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID);
static NS_DEFINE_IID(kIContentSinkIID, NS_ICONTENT_SINK_IID);
static NS_DEFINE_IID(kIHTMLContentSinkIID, NS_IHTML_CONTENT_SINK_IID);
+static NS_DEFINE_CID(kCharsetConverterManagerCID, NS_ICHARSETCONVERTERMANAGER_CID);
+
static char* gHeaderComment = "";
static char* gDocTypeHeader = "";
const int gTabSize=2;
@@ -323,7 +325,7 @@ nsresult nsHTMLContentSinkStream::InitEncoder(const nsString& aCharset)
nsICharsetConverterManager * ccm = nsnull;
res = nsServiceManager::GetService(kCharsetConverterManagerCID,
- kICharsetConverterManagerIID,
+ nsCOMTypeInfo::GetIID(),
(nsISupports**)&ccm);
if(NS_SUCCEEDED(res) && (nsnull != ccm))
{
diff --git a/htmlparser/src/nsHTMLToTXTSinkStream.cpp b/htmlparser/src/nsHTMLToTXTSinkStream.cpp
index bbc36e3ca281..e09a7d1bd1f8 100644
--- a/htmlparser/src/nsHTMLToTXTSinkStream.cpp
+++ b/htmlparser/src/nsHTMLToTXTSinkStream.cpp
@@ -46,6 +46,8 @@ static NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID);
static NS_DEFINE_IID(kIContentSinkIID, NS_ICONTENT_SINK_IID);
static NS_DEFINE_IID(kIHTMLContentSinkIID, NS_IHTML_CONTENT_SINK_IID);
+static NS_DEFINE_CID(kCharsetConverterManagerCID, NS_ICHARSETCONVERTERMANAGER_CID);
+
const int gTabSize=2;
static PRBool IsInline(eHTMLTags aTag);
@@ -92,7 +94,7 @@ nsresult nsHTMLToTXTSinkStream::InitEncoder(const nsString& aCharset)
nsICharsetConverterManager * ccm = nsnull;
res = nsServiceManager::GetService(kCharsetConverterManagerCID,
- kICharsetConverterManagerIID,
+ nsCOMTypeInfo::GetIID(),
(nsISupports**)&ccm);
if(NS_SUCCEEDED(res) && (nsnull != ccm))
{
diff --git a/htmlparser/src/nsScanner.cpp b/htmlparser/src/nsScanner.cpp
index daa37c264646..c8dea76dba78 100644
--- a/htmlparser/src/nsScanner.cpp
+++ b/htmlparser/src/nsScanner.cpp
@@ -26,6 +26,7 @@
#include "nsICharsetAlias.h"
#include "nsFileSpec.h"
+static NS_DEFINE_CID(kCharsetConverterManagerCID, NS_ICHARSETCONVERTERMANAGER_CID);
const char* kBadHTMLText="Oops...
You just tried to read a non-existent document:
";
const char* kUnorderedStringError = "String argument must be ordered. Don't you read API's?";
@@ -150,7 +151,7 @@ nsresult nsScanner::SetDocumentCharset(const nsString& aCharset , nsCharsetSourc
nsICharsetConverterManager * ccm = nsnull;
res = nsServiceManager::GetService(kCharsetConverterManagerCID,
- kICharsetConverterManagerIID,
+ nsCOMTypeInfo::GetIID(),
(nsISupports**)&ccm);
if(NS_SUCCEEDED(res) && (nsnull != ccm))
{
diff --git a/intl/locale/src/mac/nsDateTimeFormatMac.cpp b/intl/locale/src/mac/nsDateTimeFormatMac.cpp
index 0c65474f3729..b64cb0faa133 100644
--- a/intl/locale/src/mac/nsDateTimeFormatMac.cpp
+++ b/intl/locale/src/mac/nsDateTimeFormatMac.cpp
@@ -32,6 +32,8 @@ static NS_DEFINE_IID(kIDateTimeFormatIID, NS_IDATETIMEFORMAT_IID);
static NS_DEFINE_IID(kMacLocaleFactoryCID, NS_MACLOCALEFACTORY_CID);
static NS_DEFINE_IID(kIMacLocaleIID, NS_IMACLOCALE_IID);
+static NS_DEFINE_CID(kCharsetConverterManagerCID, NS_ICHARSETCONVERTERMANAGER_CID);
+
////////////////////////////////////////////////////////////////////////////////
@@ -333,7 +335,7 @@ nsresult nsDateTimeFormatMac::FormatTMTime(nsILocale* locale,
nsICharsetConverterManager * ccm = nsnull;
res = nsServiceManager::GetService(kCharsetConverterManagerCID,
- kICharsetConverterManagerIID,
+ nsCOMTypeInfo::GetIID(),
(nsISupports**)&ccm);
if(NS_SUCCEEDED(res) && (nsnull != ccm)) {
nsIUnicodeDecoder * decoder = nsnull;
diff --git a/intl/locale/src/nsCollation.cpp b/intl/locale/src/nsCollation.cpp
index a29040bb8736..6fad9ae5b741 100644
--- a/intl/locale/src/nsCollation.cpp
+++ b/intl/locale/src/nsCollation.cpp
@@ -29,6 +29,7 @@
NS_DEFINE_IID(kICollationFactoryIID, NS_ICOLLATIONFACTORY_IID);
NS_DEFINE_CID(kCollationCID, NS_COLLATION_CID);
+static NS_DEFINE_CID(kCharsetConverterManagerCID, NS_ICHARSETCONVERTERMANAGER_CID);
NS_IMPL_ISUPPORTS(nsCollationFactory, kICollationFactoryIID);
@@ -197,7 +198,7 @@ nsresult nsCollation::UnicodeToChar(const nsString& src, char** dst, const nsStr
nsresult res;
res = nsServiceManager::GetService(kCharsetConverterManagerCID,
- kICharsetConverterManagerIID,
+ nsCOMTypeInfo::GetIID(),
(nsISupports**)&ccm);
if(NS_SUCCEEDED(res) && (nsnull != ccm)) {
nsIUnicodeEncoder* encoder = nsnull;
diff --git a/intl/uconv/public/nsICharsetConverterManager.h b/intl/uconv/public/nsICharsetConverterManager.h
index 8689ddb50108..d0521e2cbcfa 100644
--- a/intl/uconv/public/nsICharsetConverterManager.h
+++ b/intl/uconv/public/nsICharsetConverterManager.h
@@ -28,13 +28,29 @@
// Interface ID for our ConverterManager interface
// {1E3F79F0-6B6B-11d2-8A86-00600811A836}
-NS_DECLARE_ID(kICharsetConverterManagerIID,
- 0x1e3f79f0, 0x6b6b, 0x11d2, 0x8a, 0x86, 0x0, 0x60, 0x8, 0x11, 0xa8, 0x36);
+// NS_DECLARE_ID(kICharsetConverterManagerIID,
+// 0x1e3f79f0, 0x6b6b, 0x11d2, 0x8a, 0x86, 0x0, 0x60, 0x8, 0x11, 0xa8, 0x36);
+
+#define NS_ICHARSETCONVERTERMANAGER_IID \
+{ /* 1E3F79F0-6B6B-11d2-8A86-00600811A836 */ \
+ 0x1e3f79f0, \
+ 0x6b6b, \
+ 0x11d2, \
+ {0x8a, 0x86, 0x00, 0x60, 0x08, 0x11, 0xa8, 0x36} \
+}
// Class ID for our ConverterManager implementation
// {1E3F79F1-6B6B-11d2-8A86-00600811A836}
-NS_DECLARE_ID(kCharsetConverterManagerCID,
- 0x1e3f79f1, 0x6b6b, 0x11d2, 0x8a, 0x86, 0x0, 0x60, 0x8, 0x11, 0xa8, 0x36);
+// NS_DECLARE_ID(kCharsetConverterManagerCID,
+// 0x1e3f79f1, 0x6b6b, 0x11d2, 0x8a, 0x86, 0x0, 0x60, 0x8, 0x11, 0xa8, 0x36);
+
+#define NS_ICHARSETCONVERTERMANAGER_CID \
+{ /* 1E3F79F1-6B6B-11d2-8A86-00600811A836 */ \
+ 0x1e3f79f1, \
+ 0x6b6b, \
+ 0x11d2, \
+ {0x8a, 0x86, 0x00, 0x60, 0x08, 0x11, 0xa8, 0x36} \
+}
#define NS_CHARSETCONVERTERMANAGER_PROGID "componment://netscape/intl/charsetconvertermanager"
@@ -63,7 +79,7 @@ class nsICharsetConverterManager : public nsISupports
{
public:
- static const nsIID& GetIID() { static nsIID iid = kICharsetConverterManagerIID; return iid; }
+ static const nsIID& GetIID() { static nsIID iid = NS_ICHARSETCONVERTERMANAGER_IID; return iid; }
/**
* Find and instantiate a Converter able to encode from Unicode into the
* destination charset.
diff --git a/intl/uconv/src/nsCharsetConverterManager.cpp b/intl/uconv/src/nsCharsetConverterManager.cpp
index ece5945155a9..c5200e0b7822 100644
--- a/intl/uconv/src/nsCharsetConverterManager.cpp
+++ b/intl/uconv/src/nsCharsetConverterManager.cpp
@@ -171,7 +171,7 @@ public:
//----------------------------------------------------------------------
// Class nsCharsetConverterManager [implementation]
-NS_IMPL_ISUPPORTS(nsCharsetConverterManager, kICharsetConverterManagerIID);
+NS_IMPL_ISUPPORTS(nsCharsetConverterManager, nsCOMTypeInfo::GetIID());
nsICharsetConverterManager * nsCharsetConverterManager::mInstance = NULL;
@@ -548,7 +548,7 @@ NS_IMETHODIMP nsManagerFactory::CreateInstance(nsISupports *aDelegate,
nsresult res = NS_OK;
- if (aIID.Equals(kICharsetConverterManagerIID))
+ if (aIID.Equals(nsCOMTypeInfo::GetIID()))
{
nsICharsetConverterManager * t = nsCharsetConverterManager::GetInstance();
if (t == NULL) return NS_ERROR_OUT_OF_MEMORY;
diff --git a/intl/uconv/src/nsUConvDll.cpp b/intl/uconv/src/nsUConvDll.cpp
index bd4bfa08a52e..7ed87c0ca48f 100644
--- a/intl/uconv/src/nsUConvDll.cpp
+++ b/intl/uconv/src/nsUConvDll.cpp
@@ -33,6 +33,7 @@
#include "nsUConvDll.h"
static NS_DEFINE_CID(kComponentManagerCID, NS_COMPONENTMANAGER_CID);
+static NS_DEFINE_CID(kCharsetConverterManagerCID, NS_ICHARSETCONVERTERMANAGER_CID);
//----------------------------------------------------------------------
// Global functions and data [declaration]
@@ -61,7 +62,7 @@ extern "C" NS_EXPORT nsresult NSGetFactory(nsISupports* aServMgr,
*aFactory = NULL;
// the converter manager
- if (aClass.Equals(kCharsetConverterManagerCID)) {
+ if (aClass.Equals(nsCOMTypeInfo::GetIID())) {
nsManagerFactory *factory = new nsManagerFactory();
if(nsnull == factory)
diff --git a/intl/uconv/ucvlatin/ns1ByteToUnicodeBase.cpp b/intl/uconv/ucvlatin/ns1ByteToUnicodeBase.cpp
index 8e599512bacf..67df7fce9447 100644
--- a/intl/uconv/ucvlatin/ns1ByteToUnicodeBase.cpp
+++ b/intl/uconv/ucvlatin/ns1ByteToUnicodeBase.cpp
@@ -25,6 +25,8 @@
#include "nsICharsetConverterManager.h"
#include "ns1ByteToUnicodeBase.h"
+static NS_DEFINE_CID(kCharsetConverterManagerCID, NS_ICHARSETCONVERTERMANAGER_CID);
+
ns1ByteToUnicodeBase::ns1ByteToUnicodeBase()
{
mUtil = nsnull;
diff --git a/layout/html/forms/src/nsFormFrame.cpp b/layout/html/forms/src/nsFormFrame.cpp
index e1845f589264..cbda8cc7d3bc 100644
--- a/layout/html/forms/src/nsFormFrame.cpp
+++ b/layout/html/forms/src/nsFormFrame.cpp
@@ -98,6 +98,8 @@ static NS_DEFINE_IID(kIWebshellIID, NS_IWEB_SHELL_IID);
static NS_DEFINE_IID(kIContentViewerContainerIID, NS_ICONTENT_VIEWER_CONTAINER_IID);
static NS_DEFINE_IID(kIDocumentViewerIID, NS_IDOCUMENT_VIEWER_IID);
+static NS_DEFINE_CID(kCharsetConverterManagerCID, NS_ICHARSETCONVERTERMANAGER_CID);
+
#ifdef SingleSignon
#define FORM_TYPE_TEXT 1
#define FORM_TYPE_PASSWORD 7
@@ -726,7 +728,7 @@ NS_IMETHODIMP nsFormFrame::GetEncoder(nsIUnicodeEncoder** encoder)
// Get Charset, get the encoder.
nsICharsetConverterManager * ccm = nsnull;
rv = nsServiceManager::GetService(kCharsetConverterManagerCID ,
- kICharsetConverterManagerIID,
+ nsCOMTypeInfo::GetIID(),
(nsISupports**)&ccm);
if(NS_SUCCEEDED(rv) && (nsnull != ccm)) {
rv = ccm->GetUnicodeEncoder(&charset, encoder);
diff --git a/mailnews/compose/src/nsMsgI18N.cpp b/mailnews/compose/src/nsMsgI18N.cpp
index bfbeda34ba7a..d09157c999a4 100644
--- a/mailnews/compose/src/nsMsgI18N.cpp
+++ b/mailnews/compose/src/nsMsgI18N.cpp
@@ -32,6 +32,7 @@
static NS_DEFINE_CID(kPrefCID, NS_PREF_CID);
static NS_DEFINE_CID(kCMimeConverterCID, NS_MIME_CONVERTER_CID);
+static NS_DEFINE_CID(kCharsetConverterManagerCID, NS_ICHARSETCONVERTERMANAGER_CID);
//
// International functions necessary for composition
diff --git a/mailnews/imap/src/nsImapProtocol.cpp b/mailnews/imap/src/nsImapProtocol.cpp
index 795c7f2fa785..47c95d15e2ed 100644
--- a/mailnews/imap/src/nsImapProtocol.cpp
+++ b/mailnews/imap/src/nsImapProtocol.cpp
@@ -78,6 +78,7 @@ static NS_DEFINE_CID(kNetServiceCID, NS_NETSERVICE_CID);
static NS_DEFINE_IID(kIWebShell, NS_IWEB_SHELL_IID);
static NS_DEFINE_CID(kEventQueueServiceCID, NS_EVENTQUEUESERVICE_CID);
static NS_DEFINE_CID(kCImapService, NS_IMAPSERVICE_CID);
+static NS_DEFINE_CID(kCharsetConverterManagerCID, NS_ICHARSETCONVERTERMANAGER_CID);
#define OUTPUT_BUFFER_SIZE (4096*2) // mscott - i should be able to remove this if I can use nsMsgLineBuffer???
diff --git a/mailnews/mime/cthandlers/vcard/mimevcrd.cpp b/mailnews/mime/cthandlers/vcard/mimevcrd.cpp
index 4aa97b498730..648e2ef6e7e0 100644
--- a/mailnews/mime/cthandlers/vcard/mimevcrd.cpp
+++ b/mailnews/mime/cthandlers/vcard/mimevcrd.cpp
@@ -43,6 +43,7 @@
//#include "vobject.h"
+static NS_DEFINE_CID(kCharsetConverterManagerCID, NS_ICHARSETCONVERTERMANAGER_CID);
static int MimeInlineTextVCard_parse_line (char *, PRInt32, MimeObject *);
static int MimeInlineTextVCard_parse_eof (MimeObject *, PRBool);
diff --git a/mailnews/mime/src/comi18n.cpp b/mailnews/mime/src/comi18n.cpp
index 7a55f929d9f9..014a3bba4145 100644
--- a/mailnews/mime/src/comi18n.cpp
+++ b/mailnews/mime/src/comi18n.cpp
@@ -34,6 +34,7 @@
#include "nsIPref.h"
static NS_DEFINE_CID(kPrefCID, NS_PREF_CID);
+static NS_DEFINE_CID(kCharsetConverterManagerCID, NS_ICHARSETCONVERTERMANAGER_CID);
// BEGIN EXTERNAL DEPENDANCY
diff --git a/parser/htmlparser/src/nsHTMLContentSinkStream.cpp b/parser/htmlparser/src/nsHTMLContentSinkStream.cpp
index 25656c43dd15..de3dc281ba91 100644
--- a/parser/htmlparser/src/nsHTMLContentSinkStream.cpp
+++ b/parser/htmlparser/src/nsHTMLContentSinkStream.cpp
@@ -48,6 +48,8 @@ static NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID);
static NS_DEFINE_IID(kIContentSinkIID, NS_ICONTENT_SINK_IID);
static NS_DEFINE_IID(kIHTMLContentSinkIID, NS_IHTML_CONTENT_SINK_IID);
+static NS_DEFINE_CID(kCharsetConverterManagerCID, NS_ICHARSETCONVERTERMANAGER_CID);
+
static char* gHeaderComment = "";
static char* gDocTypeHeader = "";
const int gTabSize=2;
@@ -323,7 +325,7 @@ nsresult nsHTMLContentSinkStream::InitEncoder(const nsString& aCharset)
nsICharsetConverterManager * ccm = nsnull;
res = nsServiceManager::GetService(kCharsetConverterManagerCID,
- kICharsetConverterManagerIID,
+ nsCOMTypeInfo::GetIID(),
(nsISupports**)&ccm);
if(NS_SUCCEEDED(res) && (nsnull != ccm))
{
diff --git a/parser/htmlparser/src/nsHTMLToTXTSinkStream.cpp b/parser/htmlparser/src/nsHTMLToTXTSinkStream.cpp
index bbc36e3ca281..e09a7d1bd1f8 100644
--- a/parser/htmlparser/src/nsHTMLToTXTSinkStream.cpp
+++ b/parser/htmlparser/src/nsHTMLToTXTSinkStream.cpp
@@ -46,6 +46,8 @@ static NS_DEFINE_IID(kISupportsIID, NS_ISUPPORTS_IID);
static NS_DEFINE_IID(kIContentSinkIID, NS_ICONTENT_SINK_IID);
static NS_DEFINE_IID(kIHTMLContentSinkIID, NS_IHTML_CONTENT_SINK_IID);
+static NS_DEFINE_CID(kCharsetConverterManagerCID, NS_ICHARSETCONVERTERMANAGER_CID);
+
const int gTabSize=2;
static PRBool IsInline(eHTMLTags aTag);
@@ -92,7 +94,7 @@ nsresult nsHTMLToTXTSinkStream::InitEncoder(const nsString& aCharset)
nsICharsetConverterManager * ccm = nsnull;
res = nsServiceManager::GetService(kCharsetConverterManagerCID,
- kICharsetConverterManagerIID,
+ nsCOMTypeInfo::GetIID(),
(nsISupports**)&ccm);
if(NS_SUCCEEDED(res) && (nsnull != ccm))
{
diff --git a/parser/htmlparser/src/nsScanner.cpp b/parser/htmlparser/src/nsScanner.cpp
index daa37c264646..c8dea76dba78 100644
--- a/parser/htmlparser/src/nsScanner.cpp
+++ b/parser/htmlparser/src/nsScanner.cpp
@@ -26,6 +26,7 @@
#include "nsICharsetAlias.h"
#include "nsFileSpec.h"
+static NS_DEFINE_CID(kCharsetConverterManagerCID, NS_ICHARSETCONVERTERMANAGER_CID);
const char* kBadHTMLText="Oops...
You just tried to read a non-existent document:
";
const char* kUnorderedStringError = "String argument must be ordered. Don't you read API's?";
@@ -150,7 +151,7 @@ nsresult nsScanner::SetDocumentCharset(const nsString& aCharset , nsCharsetSourc
nsICharsetConverterManager * ccm = nsnull;
res = nsServiceManager::GetService(kCharsetConverterManagerCID,
- kICharsetConverterManagerIID,
+ nsCOMTypeInfo::GetIID(),
(nsISupports**)&ccm);
if(NS_SUCCEEDED(res) && (nsnull != ccm))
{
diff --git a/xpcom/ds/nsCRT.h b/xpcom/ds/nsCRT.h
index c44a5665f83f..d2bf380aec85 100644
--- a/xpcom/ds/nsCRT.h
+++ b/xpcom/ds/nsCRT.h
@@ -23,6 +23,7 @@
#include "plstr.h"
#include "nscore.h"
#include "prtypes.h"
+#include "nsCppSharedAllocator.h"
#define CR '\015'
#define LF '\012'
@@ -196,12 +197,15 @@ public:
static PRInt32 strncasecmp(const PRUnichar* s1, const char* s2,
PRUint32 aMaxLen);
- // Note: uses new[] to allocate memory, so you must use delete[] to
- // free the memory
+ // Note: uses the global shared allocator |nsAllocator| through the C++
+ // |nsCppSharedAllocator| interface (matches C++ standard allocators).
+ // So must the corresponding |free|, as below, must do the same.
static PRUnichar* strdup(const PRUnichar* str);
static void free(PRUnichar* str) {
- delete[] str;
+ nsCppSharedAllocator shared_allocator;
+ shared_allocator.deallocate(str, 0 /*we never new or kept the size*/);
+ // delete[] str;
}
/// Compute a hashcode for a C string
diff --git a/xpcom/io/nsUnicharInputStream.cpp b/xpcom/io/nsUnicharInputStream.cpp
index 242f77666417..1cccd427654b 100644
--- a/xpcom/io/nsUnicharInputStream.cpp
+++ b/xpcom/io/nsUnicharInputStream.cpp
@@ -33,6 +33,7 @@
#endif
static NS_DEFINE_IID(kIUnicharInputStreamIID, NS_IUNICHAR_INPUT_STREAM_IID);
+static NS_DEFINE_CID(kCharsetConverterManagerCID, NS_ICHARSETCONVERTERMANAGER_CID);
class StringUnicharInputStream : public nsIUnicharInputStream {
public:
@@ -142,8 +143,8 @@ NS_NewB2UConverter(nsIUnicodeDecoder** aInstancePtrResult,
nsAutoString defaultCharset("ISO-8859-1");
if (aCharSet == nsnull) aCharSet = &defaultCharset;
- res = nsServiceManager::GetService(kCharsetConverterManagerCID,
- kICharsetConverterManagerIID, (nsISupports**)&ccm);
+ res = nsServiceManager::GetService(nsCOMTypeInfo::GetIID(),
+ nsCOMTypeInfo::GetIID(), (nsISupports**)&ccm);
if (NS_FAILED(res)) return res;
res = ccm->GetUnicodeDecoder(aCharSet, aInstancePtrResult);