From ce0237336ed7ffdc36ebfd35a17f1be963b7e760 Mon Sep 17 00:00:00 2001 From: "scott%scott-macgregor.org" Date: Fri, 2 Mar 2007 06:19:43 +0000 Subject: [PATCH] Bug #372322 --> Attachments dropped into the wrong folder when using Drag and Drop on Mac OS X. sr=bienvenu --- mailnews/base/src/nsMessenger.cpp | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/mailnews/base/src/nsMessenger.cpp b/mailnews/base/src/nsMessenger.cpp index 343c74f743f..870b6a3d5a2 100644 --- a/mailnews/base/src/nsMessenger.cpp +++ b/mailnews/base/src/nsMessenger.cpp @@ -832,30 +832,29 @@ NS_IMETHODIMP nsMessenger::SaveAttachmentToFolder(const char * contentType, const char * url, const char * displayName, const char * messageUri, nsILocalFile * aDestFolder, nsILocalFile ** aOutFile) { - nsresult rv = NS_OK; + NS_ENSURE_ARG_POINTER(aDestFolder); + nsresult rv; + + nsCOMPtr clone; + rv = aDestFolder->Clone(getter_AddRefs(clone)); + NS_ENSURE_SUCCESS(rv, rv); + + nsCOMPtr attachmentDestination = do_QueryInterface(clone); + nsXPIDLCString unescapedFileName; - rv = ConvertAndSanitizeFileName(displayName, nsnull, getter_Copies(unescapedFileName)); NS_ENSURE_SUCCESS(rv, rv); - nsCOMPtr fileSpec; - - rv = NS_NewFileSpecFromIFile(aDestFolder, getter_AddRefs(fileSpec)); + rv = attachmentDestination->AppendNative(unescapedFileName); NS_ENSURE_SUCCESS(rv, rv); - fileSpec->SetLeafName(unescapedFileName); + nsCOMPtr fileSpec; + rv = NS_NewFileSpecFromIFile(attachmentDestination, getter_AddRefs(fileSpec)); + NS_ENSURE_SUCCESS(rv, rv); - // ok now we have a file spec for the destination rv = SaveAttachment(fileSpec, url, messageUri, contentType, nsnull); - // before we return, we need to convert our file spec back to a nsIFile to return to the caller - nsCOMPtr outputFile; - nsFileSpec actualSpec; - fileSpec->GetFileSpec(&actualSpec); - NS_FileSpecToIFile(&actualSpec, getter_AddRefs(outputFile)); - - NS_IF_ADDREF(*aOutFile = outputFile); - + attachmentDestination.swap(*aOutFile); return rv; }