From 4f4514acd46ab8a481c511012fe0267488eb4c38 Mon Sep 17 00:00:00 2001 From: "naving%netscape.com" Date: Sat, 25 Aug 2001 01:28:31 +0000 Subject: [PATCH] 95607 r=hwaara sr=bienvenu a=asa. Use nsCAutoString to avoid freeing mismatched memory. git-svn-id: svn://10.0.0.236/trunk@101786 18797224-902f-48f8-a5cc-f745e15eee43 --- .../imap/src/nsImapIncomingServer.cpp | 41 +++++++++---------- 1 file changed, 19 insertions(+), 22 deletions(-) diff --git a/mozilla/mailnews/imap/src/nsImapIncomingServer.cpp b/mozilla/mailnews/imap/src/nsImapIncomingServer.cpp index a55ebc72c61..3293016fb3b 100644 --- a/mozilla/mailnews/imap/src/nsImapIncomingServer.cpp +++ b/mozilla/mailnews/imap/src/nsImapIncomingServer.cpp @@ -1119,7 +1119,7 @@ NS_IMETHODIMP nsImapIncomingServer::PossibleImapMailbox(const char *folderPath, PRInt32 j=0; for (PRInt32 i=offset;i <(offset+5);i++) inbox.SetCharAt(parentName.CharAt(i), j++); - if (nsCRT::strcmp(inbox,"INBOX") != 0 ) + if (nsCRT::strcmp(inbox,"INBOX") != 0) { nsCAutoString INBOX("INBOX"); dupFolderPath.ReplaceSubstring(inbox,INBOX); @@ -1387,30 +1387,27 @@ nsresult nsImapIncomingServer::GetFolder(const char* name, nsIMsgFolder** pFolde rv = GetRootFolder(getter_AddRefs(rootFolder)); if (NS_SUCCEEDED(rv) && rootFolder) { - char* uri = nsnull; - rv = rootFolder->GetURI(&uri); + nsXPIDLCString uri; + rv = rootFolder->GetURI(getter_Copies(uri)); if (NS_SUCCEEDED(rv) && uri) { - nsAutoString uriAutoString; uriAutoString.AssignWithConversion(uri); - uriAutoString.AppendWithConversion('/'); - uriAutoString.AppendWithConversion(name); - nsCOMPtr rdf(do_GetService(kRDFServiceCID, &rv)); - if (NS_FAILED(rv)) return rv; - char* uriString = uriAutoString.ToNewCString(); - nsCOMPtr res; - rv = rdf->GetResource(uriString, getter_AddRefs(res)); - if (NS_SUCCEEDED(rv)) - { - nsCOMPtr folder(do_QueryInterface(res, &rv)); - if (NS_SUCCEEDED(rv) && folder) - { - *pFolder = folder; - NS_ADDREF(*pFolder); - } - } - delete [] uriString; + nsCAutoString uriString(uri); + uriString.Append('/'); + uriString.Append(name); + nsCOMPtr rdf(do_GetService(kRDFServiceCID, &rv)); + if (NS_FAILED(rv)) return rv; + nsCOMPtr res; + rv = rdf->GetResource(uriString, getter_AddRefs(res)); + if (NS_SUCCEEDED(rv)) + { + nsCOMPtr folder(do_QueryInterface(res, &rv)); + if (NS_SUCCEEDED(rv) && folder) + { + *pFolder = folder; + NS_ADDREF(*pFolder); + } + } } - PR_FREEIF(uri); } return rv; }