Bug 1035650, part 2: Fix public destructors in compose, r=Neil

Also split out due to non-trivial changes.
This commit is contained in:
Joshua Cranmer 2014-07-09 09:01:16 -05:00
Родитель ca1a1063f2
Коммит 01cb79cb32
19 изменённых файлов: 64 добавлений и 43 удалений

Просмотреть файл

@ -96,4 +96,16 @@ public:
uint32_t m_nullCount; uint32_t m_nullCount;
uint32_t m_maxLineLength; uint32_t m_maxLineLength;
}; };
namespace mozilla {
template <> struct HasDangerousPublicDestructor<nsMsgAttachmentData>
{
static const bool value = true;
};
template <> struct HasDangerousPublicDestructor<nsMsgAttachedFile>
{
static const bool value = true;
};
} // namespace mozilla
#endif #endif

Просмотреть файл

@ -16,9 +16,9 @@ public:
NS_DECL_NSIMSGATTACHMENT NS_DECL_NSIMSGATTACHMENT
nsMsgAttachment(); nsMsgAttachment();
virtual ~nsMsgAttachment();
private: private:
virtual ~nsMsgAttachment();
nsresult DeleteAttachment(); nsresult DeleteAttachment();
nsString mName; nsString mName;

Просмотреть файл

@ -30,7 +30,6 @@ struct nsMsgRecipient
class nsMsgCompFields : public nsIMsgCompFields { class nsMsgCompFields : public nsIMsgCompFields {
public: public:
nsMsgCompFields(); nsMsgCompFields();
virtual ~nsMsgCompFields();
/* this macro defines QueryInterface, AddRef and Release for this class */ /* this macro defines QueryInterface, AddRef and Release for this class */
NS_DECL_THREADSAFE_ISUPPORTS NS_DECL_THREADSAFE_ISUPPORTS
@ -140,6 +139,7 @@ public:
nsTArray<nsMsgRecipient> &aResult); nsTArray<nsMsgRecipient> &aResult);
protected: protected:
virtual ~nsMsgCompFields();
char* m_headers[MSG_MAX_HEADERS]; char* m_headers[MSG_MAX_HEADERS];
nsCString m_body; nsCString m_body;
nsCOMArray<nsIMsgAttachment> m_attachments; nsCOMArray<nsIMsgAttachment> m_attachments;

Просмотреть файл

@ -29,6 +29,8 @@ public:
NS_DECL_NSIMSGCOMPUTILS NS_DECL_NSIMSGCOMPUTILS
nsMsgCompUtils(); nsMsgCompUtils();
private:
virtual ~nsMsgCompUtils(); virtual ~nsMsgCompUtils();
}; };

Просмотреть файл

@ -35,7 +35,6 @@ class nsMsgCompose : public nsIMsgCompose, public nsSupportsWeakReference
public: public:
nsMsgCompose(); nsMsgCompose();
virtual ~nsMsgCompose();
/* this macro defines QueryInterface, AddRef and Release for this class */ /* this macro defines QueryInterface, AddRef and Release for this class */
NS_DECL_THREADSAFE_ISUPPORTS NS_DECL_THREADSAFE_ISUPPORTS
@ -47,6 +46,7 @@ class nsMsgCompose : public nsIMsgCompose, public nsSupportsWeakReference
NS_DECL_NSIMSGSENDLISTENER NS_DECL_NSIMSGSENDLISTENER
private: private:
virtual ~nsMsgCompose();
// Deal with quoting issues... // Deal with quoting issues...
nsresult QuoteOriginalMessage(); // New template nsresult QuoteOriginalMessage(); // New template
@ -153,7 +153,6 @@ public:
bool charetOverride, bool charetOverride,
bool quoteOriginal, bool quoteOriginal,
const nsACString& htmlToQuote); const nsACString& htmlToQuote);
virtual ~QuotingOutputStreamListener(void);
NS_DECL_ISUPPORTS NS_DECL_ISUPPORTS
NS_DECL_NSIREQUESTOBSERVER NS_DECL_NSIREQUESTOBSERVER
@ -166,6 +165,7 @@ public:
NS_IMETHOD AppendToMsgBody(const nsCString &inStr); NS_IMETHOD AppendToMsgBody(const nsCString &inStr);
private: private:
virtual ~QuotingOutputStreamListener();
nsWeakPtr mWeakComposeObj; nsWeakPtr mWeakComposeObj;
nsString mMsgBody; nsString mMsgBody;
nsString mCitePrefix; nsString mCitePrefix;
@ -192,7 +192,6 @@ class nsMsgComposeSendListener : public nsIMsgComposeSendListener, public nsIMsg
{ {
public: public:
nsMsgComposeSendListener(void); nsMsgComposeSendListener(void);
virtual ~nsMsgComposeSendListener(void);
// nsISupports interface // nsISupports interface
NS_DECL_ISUPPORTS NS_DECL_ISUPPORTS
@ -213,6 +212,7 @@ public:
nsresult GetMsgFolder(nsIMsgCompose *compObj, nsIMsgFolder **msgFolder); nsresult GetMsgFolder(nsIMsgCompose *compObj, nsIMsgFolder **msgFolder);
private: private:
virtual ~nsMsgComposeSendListener();
nsWeakPtr mWeakComposeObj; nsWeakPtr mWeakComposeObj;
MSG_DeliverMode mDeliverMode; MSG_DeliverMode mDeliverMode;
}; };

Просмотреть файл

@ -10,11 +10,11 @@ class nsMsgComposeContentHandler : public nsIContentHandler
{ {
public: public:
nsMsgComposeContentHandler(); nsMsgComposeContentHandler();
virtual ~nsMsgComposeContentHandler();
NS_DECL_ISUPPORTS NS_DECL_ISUPPORTS
NS_DECL_NSICONTENTHANDLER NS_DECL_NSICONTENTHANDLER
private: private:
virtual ~nsMsgComposeContentHandler();
nsresult GetBestIdentity(nsIInterfaceRequestor* aWindowContext, nsresult GetBestIdentity(nsIInterfaceRequestor* aWindowContext,
nsIMsgIdentity **identity); nsIMsgIdentity **identity);
}; };

Просмотреть файл

@ -11,11 +11,12 @@ class nsMsgComposeParams : public nsIMsgComposeParams
{ {
public: public:
nsMsgComposeParams(); nsMsgComposeParams();
virtual ~nsMsgComposeParams();
NS_DECL_ISUPPORTS NS_DECL_ISUPPORTS
NS_DECL_NSIMSGCOMPOSEPARAMS NS_DECL_NSIMSGCOMPOSEPARAMS
private:
virtual ~nsMsgComposeParams();
MSG_ComposeType mType; MSG_ComposeType mType;
MSG_ComposeFormat mFormat; MSG_ComposeFormat mFormat;
nsCString mOriginalMsgUri; nsCString mOriginalMsgUri;

Просмотреть файл

@ -12,9 +12,9 @@ public:
NS_DECL_NSIMSGCOMPOSEPROGRESSPARAMS NS_DECL_NSIMSGCOMPOSEPROGRESSPARAMS
nsMsgComposeProgressParams(); nsMsgComposeProgressParams();
virtual ~nsMsgComposeProgressParams();
private: private:
virtual ~nsMsgComposeProgressParams();
nsString m_subject; nsString m_subject;
MSG_DeliverMode m_deliveryMode; MSG_DeliverMode m_deliveryMode;
}; };

Просмотреть файл

@ -876,7 +876,8 @@ nsMsgComposeService::CacheWindow(nsIDOMWindow *aWindow, bool aComposeHTML, nsIMs
return NS_ERROR_NOT_AVAILABLE; return NS_ERROR_NOT_AVAILABLE;
} }
class nsMsgTemplateReplyHelper : public nsIStreamListener, public nsIUrlListener class nsMsgTemplateReplyHelper MOZ_FINAL: public nsIStreamListener,
public nsIUrlListener
{ {
public: public:
NS_DECL_ISUPPORTS NS_DECL_ISUPPORTS
@ -885,7 +886,6 @@ public:
NS_DECL_NSIREQUESTOBSERVER NS_DECL_NSIREQUESTOBSERVER
nsMsgTemplateReplyHelper(); nsMsgTemplateReplyHelper();
~nsMsgTemplateReplyHelper();
nsCOMPtr <nsIMsgDBHdr> mHdrToReplyTo; nsCOMPtr <nsIMsgDBHdr> mHdrToReplyTo;
nsCOMPtr <nsIMsgDBHdr> mTemplateHdr; nsCOMPtr <nsIMsgDBHdr> mTemplateHdr;
@ -894,6 +894,9 @@ public:
nsCString mTemplateBody; nsCString mTemplateBody;
bool mInMsgBody; bool mInMsgBody;
char mLastBlockChars[3]; char mLastBlockChars[3];
private:
~nsMsgTemplateReplyHelper();
}; };
NS_IMPL_ISUPPORTS(nsMsgTemplateReplyHelper, NS_IMPL_ISUPPORTS(nsMsgTemplateReplyHelper,

Просмотреть файл

@ -48,7 +48,6 @@ class nsMsgComposeService :
{ {
public: public:
nsMsgComposeService(); nsMsgComposeService();
virtual ~nsMsgComposeService();
NS_DECL_ISUPPORTS NS_DECL_ISUPPORTS
NS_DECL_NSIMSGCOMPOSESERVICE NS_DECL_NSIMSGCOMPOSESERVICE
@ -61,6 +60,7 @@ public:
nsresult AddGlobalHtmlDomains(); nsresult AddGlobalHtmlDomains();
private: private:
virtual ~nsMsgComposeService();
bool mLogComposePerformance; bool mLogComposePerformance;
int32_t mMaxRecycledWindows; int32_t mMaxRecycledWindows;

Просмотреть файл

@ -31,7 +31,6 @@ class CopyListener : public nsIMsgCopyServiceListener
{ {
public: public:
CopyListener(void); CopyListener(void);
virtual ~CopyListener(void);
// nsISupports interface // nsISupports interface
NS_DECL_THREADSAFE_ISUPPORTS NS_DECL_THREADSAFE_ISUPPORTS
@ -51,6 +50,7 @@ public:
bool mCopyInProgress; bool mCopyInProgress;
private: private:
virtual ~CopyListener();
nsCOMPtr<nsIMsgSend> mComposeAndSend; nsCOMPtr<nsIMsgSend> mComposeAndSend;
}; };
@ -62,7 +62,6 @@ class nsMsgCopy : public nsIUrlListener
{ {
public: public:
nsMsgCopy(); nsMsgCopy();
virtual ~nsMsgCopy();
// nsISupports interface // nsISupports interface
NS_DECL_ISUPPORTS NS_DECL_ISUPPORTS
@ -102,6 +101,9 @@ public:
bool mIsDraft; bool mIsDraft;
nsCOMPtr<nsIMsgSend> mMsgSendObj; nsCOMPtr<nsIMsgSend> mMsgSendObj;
char *mSavePref; char *mSavePref;
private:
virtual ~nsMsgCopy();
}; };
// Useful function for the back end... // Useful function for the back end...

Просмотреть файл

@ -19,7 +19,6 @@ class nsMsgQuoteListener: public nsIMsgQuoteListener
{ {
public: public:
nsMsgQuoteListener(); nsMsgQuoteListener();
virtual ~nsMsgQuoteListener();
NS_DECL_THREADSAFE_ISUPPORTS NS_DECL_THREADSAFE_ISUPPORTS
@ -28,17 +27,19 @@ public:
NS_DECL_NSIMSGQUOTELISTENER NS_DECL_NSIMSGQUOTELISTENER
private: private:
virtual ~nsMsgQuoteListener();
nsWeakPtr mMsgQuote; nsWeakPtr mMsgQuote;
}; };
class nsMsgQuote: public nsIMsgQuote, public nsSupportsWeakReference { class nsMsgQuote: public nsIMsgQuote, public nsSupportsWeakReference {
public: public:
nsMsgQuote(); nsMsgQuote();
virtual ~nsMsgQuote();
NS_DECL_THREADSAFE_ISUPPORTS NS_DECL_THREADSAFE_ISUPPORTS
NS_DECL_NSIMSGQUOTE NS_DECL_NSIMSGQUOTE
private:
virtual ~nsMsgQuote();
// //
// Implementation data... // Implementation data...
// //

Просмотреть файл

@ -200,12 +200,12 @@ class MsgDeliveryListener : public nsIUrlListener
{ {
public: public:
MsgDeliveryListener(nsIMsgSend *aMsgSend, bool inIsNewsDelivery); MsgDeliveryListener(nsIMsgSend *aMsgSend, bool inIsNewsDelivery);
virtual ~MsgDeliveryListener();
NS_DECL_ISUPPORTS NS_DECL_ISUPPORTS
NS_DECL_NSIURLLISTENER NS_DECL_NSIURLLISTENER
private: private:
virtual ~MsgDeliveryListener();
nsCOMPtr<nsIMsgSend> mMsgSend; nsCOMPtr<nsIMsgSend> mMsgSend;
bool mIsNewsDelivery; bool mIsNewsDelivery;
}; };
@ -1477,7 +1477,7 @@ nsMsgComposeAndSend::GetMultipartRelatedCount(bool forceToBeCalculated /*=false*
// preallocate space for part numbers // preallocate space for part numbers
m_partNumbers.SetLength(count); m_partNumbers.SetLength(count);
// Let parse the list to count the number of valid objects. BTW, we can remove the others from the list // Let parse the list to count the number of valid objects. BTW, we can remove the others from the list
nsMsgAttachmentData attachment; nsRefPtr<nsMsgAttachmentData> attachment(new nsMsgAttachmentData);
int32_t i; int32_t i;
nsCOMPtr<nsIDOMNode> node; nsCOMPtr<nsIDOMNode> node;
@ -1493,7 +1493,7 @@ nsMsgComposeAndSend::GetMultipartRelatedCount(bool forceToBeCalculated /*=false*
bool acceptObject = false; bool acceptObject = false;
if (node) if (node)
{ {
rv = GetEmbeddedObjectInfo(node, &attachment, &acceptObject); rv = GetEmbeddedObjectInfo(node, attachment, &acceptObject);
} }
else // outlook/eudora import case else // outlook/eudora import case
{ {
@ -1788,7 +1788,7 @@ nsMsgComposeAndSend::ProcessMultipartRelated(int32_t *aMailboxCount, int32_t *aN
if (!mEmbeddedObjectList) if (!mEmbeddedObjectList)
return NS_ERROR_MIME_MPART_ATTACHMENT_ERROR; return NS_ERROR_MIME_MPART_ATTACHMENT_ERROR;
nsMsgAttachmentData attachment; nsRefPtr<nsMsgAttachmentData> attachment(new nsMsgAttachmentData);
int32_t locCount = -1; int32_t locCount = -1;
if (multipartCount > 0) if (multipartCount > 0)
@ -1811,7 +1811,7 @@ nsMsgComposeAndSend::ProcessMultipartRelated(int32_t *aMailboxCount, int32_t *aN
if (node) if (node)
{ {
bool acceptObject = false; bool acceptObject = false;
rv = GetEmbeddedObjectInfo(node, &attachment, &acceptObject); rv = GetEmbeddedObjectInfo(node, attachment, &acceptObject);
NS_ENSURE_SUCCESS(rv, NS_ERROR_MIME_MPART_ATTACHMENT_ERROR); NS_ENSURE_SUCCESS(rv, NS_ERROR_MIME_MPART_ATTACHMENT_ERROR);
if (!acceptObject) if (!acceptObject)
continue; continue;
@ -1824,11 +1824,11 @@ nsMsgComposeAndSend::ProcessMultipartRelated(int32_t *aMailboxCount, int32_t *aN
nsCOMPtr<nsIMsgEmbeddedImageData> imageData = do_QueryElementAt(mEmbeddedObjectList, locCount, &rv); nsCOMPtr<nsIMsgEmbeddedImageData> imageData = do_QueryElementAt(mEmbeddedObjectList, locCount, &rv);
if (!imageData) if (!imageData)
return NS_ERROR_MIME_MPART_ATTACHMENT_ERROR; return NS_ERROR_MIME_MPART_ATTACHMENT_ERROR;
imageData->GetUri(getter_AddRefs(attachment.m_url)); imageData->GetUri(getter_AddRefs(attachment->m_url));
if (!attachment.m_url) if (!attachment->m_url)
return NS_ERROR_MIME_MPART_ATTACHMENT_ERROR; return NS_ERROR_MIME_MPART_ATTACHMENT_ERROR;
imageData->GetCid(m_attachments[i]->m_contentId); imageData->GetCid(m_attachments[i]->m_contentId);
imageData->GetName(attachment.m_realName); imageData->GetName(attachment->m_realName);
} }
@ -1848,9 +1848,9 @@ nsMsgComposeAndSend::ProcessMultipartRelated(int32_t *aMailboxCount, int32_t *aN
for (k = mPreloadedAttachmentCount; k < i; k++) for (k = mPreloadedAttachmentCount; k < i; k++)
{ {
bool isEqual = false; bool isEqual = false;
NS_ASSERTION(attachment.m_url, "null attachment url!"); NS_ASSERTION(attachment->m_url, "null attachment url!");
if (attachment.m_url) if (attachment->m_url)
(void)attachment.m_url->Equals(m_attachments[k]->mURL, &isEqual); (void)attachment->m_url->Equals(m_attachments[k]->mURL, &isEqual);
if (isEqual) if (isEqual)
{ {
duplicateOf = k; duplicateOf = k;
@ -1863,15 +1863,15 @@ nsMsgComposeAndSend::ProcessMultipartRelated(int32_t *aMailboxCount, int32_t *aN
// //
// Now we have to get all of the interesting information from // Now we have to get all of the interesting information from
// the nsIDOMNode we have in hand... // the nsIDOMNode we have in hand...
m_attachments[i]->mURL = attachment.m_url; m_attachments[i]->mURL = attachment->m_url;
m_attachments[i]->m_overrideType = attachment.m_realType; m_attachments[i]->m_overrideType = attachment->m_realType;
m_attachments[i]->m_overrideEncoding = attachment.m_realEncoding; m_attachments[i]->m_overrideEncoding = attachment->m_realEncoding;
m_attachments[i]->m_desiredType = attachment.m_desiredType; m_attachments[i]->m_desiredType = attachment->m_desiredType;
m_attachments[i]->m_description = attachment.m_description; m_attachments[i]->m_description = attachment->m_description;
m_attachments[i]->m_realName = attachment.m_realName; m_attachments[i]->m_realName = attachment->m_realName;
m_attachments[i]->m_xMacType = attachment.m_xMacType; m_attachments[i]->m_xMacType = attachment->m_xMacType;
m_attachments[i]->m_xMacCreator = attachment.m_xMacCreator; m_attachments[i]->m_xMacCreator = attachment->m_xMacCreator;
m_attachments[i]->m_charset = mCompFields->GetCharacterSet(); m_attachments[i]->m_charset = mCompFields->GetCharacterSet();
m_attachments[i]->m_encoding = ENCODING_7BIT; m_attachments[i]->m_encoding = ENCODING_7BIT;

Просмотреть файл

@ -172,7 +172,6 @@ public:
NS_DECL_THREADSAFE_ISUPPORTS NS_DECL_THREADSAFE_ISUPPORTS
nsMsgComposeAndSend(); nsMsgComposeAndSend();
virtual ~nsMsgComposeAndSend();
// Delivery and completion callback routines... // Delivery and completion callback routines...
@ -368,6 +367,7 @@ protected:
nsCOMPtr<nsIStringBundle> mComposeBundle; nsCOMPtr<nsIStringBundle> mComposeBundle;
nsresult GetNotificationCallbacks(nsIInterfaceRequestor** aCallbacks); nsresult GetNotificationCallbacks(nsIInterfaceRequestor** aCallbacks);
private: private:
virtual ~nsMsgComposeAndSend();
// will set m_attachment1_body & m_attachment1_body_length; // will set m_attachment1_body & m_attachment1_body_length;
nsresult EnsureLineBreaks(const nsCString &aBody); nsresult EnsureLineBreaks(const nsCString &aBody);

Просмотреть файл

@ -28,13 +28,13 @@ class SendOperationListener : public nsIMsgSendListener,
{ {
public: public:
SendOperationListener(nsMsgSendLater *aSendLater); SendOperationListener(nsMsgSendLater *aSendLater);
virtual ~SendOperationListener();
NS_DECL_ISUPPORTS NS_DECL_ISUPPORTS
NS_DECL_NSIMSGSENDLISTENER NS_DECL_NSIMSGSENDLISTENER
NS_DECL_NSIMSGCOPYSERVICELISTENER NS_DECL_NSIMSGCOPYSERVICELISTENER
private: private:
virtual ~SendOperationListener();
nsMsgSendLater *mSendLater; nsMsgSendLater *mSendLater;
}; };
@ -47,7 +47,6 @@ class nsMsgSendLater: public nsIMsgSendLater,
{ {
public: public:
nsMsgSendLater(); nsMsgSendLater();
virtual ~nsMsgSendLater();
nsresult Init(); nsresult Init();
NS_DECL_ISUPPORTS NS_DECL_ISUPPORTS
@ -99,6 +98,7 @@ public:
// Private Information // Private Information
private: private:
virtual ~nsMsgSendLater();
nsresult GetIdentityFromKey(const char *aKey, nsIMsgIdentity **aIdentity); nsresult GetIdentityFromKey(const char *aKey, nsIMsgIdentity **aIdentity);
nsresult ReparseDBIfNeeded(nsIUrlListener *aListener); nsresult ReparseDBIfNeeded(nsIUrlListener *aListener);
nsresult InternalSendMessages(bool aUserInitiated, nsresult InternalSendMessages(bool aUserInitiated,

Просмотреть файл

@ -17,9 +17,9 @@ public:
NS_DECL_NSIMSGPROCESSREPORT NS_DECL_NSIMSGPROCESSREPORT
nsMsgProcessReport(); nsMsgProcessReport();
virtual ~nsMsgProcessReport();
private: private:
virtual ~nsMsgProcessReport();
bool mProceeded; bool mProceeded;
nsresult mError; nsresult mError;
nsString mMessage; nsString mMessage;
@ -33,9 +33,9 @@ public:
NS_DECL_NSIMSGSENDREPORT NS_DECL_NSIMSGSENDREPORT
nsMsgSendReport(); nsMsgSendReport();
virtual ~nsMsgSendReport();
private: private:
virtual ~nsMsgSendReport();
#define SEND_LAST_PROCESS process_FCC #define SEND_LAST_PROCESS process_FCC
nsCOMPtr<nsIMsgProcessReport> mProcessReport[SEND_LAST_PROCESS + 1]; nsCOMPtr<nsIMsgProcessReport> mProcessReport[SEND_LAST_PROCESS + 1];
int32_t mDeliveryMode; int32_t mDeliveryMode;

Просмотреть файл

@ -17,12 +17,12 @@ class nsSmtpServer : public nsISmtpServer,
{ {
public: public:
nsSmtpServer(); nsSmtpServer();
virtual ~nsSmtpServer();
NS_DECL_ISUPPORTS NS_DECL_ISUPPORTS
NS_DECL_NSISMTPSERVER NS_DECL_NSISMTPSERVER
private: private:
virtual ~nsSmtpServer();
nsCString mKey; nsCString mKey;
nsCOMPtr<nsIPrefBranch> mPrefBranch; nsCOMPtr<nsIPrefBranch> mPrefBranch;
nsCOMPtr<nsIPrefBranch> mDefPrefBranch; nsCOMPtr<nsIPrefBranch> mDefPrefBranch;

Просмотреть файл

@ -25,7 +25,6 @@ class nsSmtpService : public nsISmtpService, public nsIProtocolHandler
public: public:
nsSmtpService(); nsSmtpService();
virtual ~nsSmtpService();
NS_DECL_ISUPPORTS NS_DECL_ISUPPORTS
@ -44,6 +43,7 @@ protected:
private: private:
virtual ~nsSmtpService();
static bool findServerByKey(nsISmtpServer *aServer, void *aData); static bool findServerByKey(nsISmtpServer *aServer, void *aData);
static bool findServerByHostname(nsISmtpServer *aServer, void *aData); static bool findServerByHostname(nsISmtpServer *aServer, void *aData);

Просмотреть файл

@ -31,7 +31,6 @@ class nsURLFetcher : public nsIURLFetcher,
{ {
public: public:
nsURLFetcher(); nsURLFetcher();
virtual ~nsURLFetcher();
/* this macro defines QueryInterface, AddRef and Release for this class */ /* this macro defines QueryInterface, AddRef and Release for this class */
NS_DECL_ISUPPORTS NS_DECL_ISUPPORTS
@ -58,6 +57,7 @@ protected:
nsresult InsertConverter(const char * aContentType); nsresult InsertConverter(const char * aContentType);
private: private:
virtual ~nsURLFetcher();
nsCOMPtr<nsIOutputStream> mOutStream; // the output file stream nsCOMPtr<nsIOutputStream> mOutStream; // the output file stream
nsCOMPtr<nsIFile> mLocalFile; // the output file itself nsCOMPtr<nsIFile> mLocalFile; // the output file itself
nsCOMPtr<nsIStreamListener> mConverter; // the stream converter, if needed nsCOMPtr<nsIStreamListener> mConverter; // the stream converter, if needed
@ -86,7 +86,6 @@ class nsURLFetcherStreamConsumer : public nsIStreamListener
{ {
public: public:
nsURLFetcherStreamConsumer(nsURLFetcher* urlFetcher); nsURLFetcherStreamConsumer(nsURLFetcher* urlFetcher);
virtual ~nsURLFetcherStreamConsumer();
/* additional members */ /* additional members */
NS_DECL_ISUPPORTS NS_DECL_ISUPPORTS
@ -94,6 +93,7 @@ public:
NS_DECL_NSIREQUESTOBSERVER NS_DECL_NSIREQUESTOBSERVER
private: private:
virtual ~nsURLFetcherStreamConsumer();
nsURLFetcher* mURLFetcher; nsURLFetcher* mURLFetcher;
}; };