diff --git a/mozilla/xpcom/io/nsLocalFileOS2.cpp b/mozilla/xpcom/io/nsLocalFileOS2.cpp index 4c4b4a386ad..7954eb216bf 100644 --- a/mozilla/xpcom/io/nsLocalFileOS2.cpp +++ b/mozilla/xpcom/io/nsLocalFileOS2.cpp @@ -621,21 +621,18 @@ nsLocalFile::ResolveAndStat(PRBool resolveTerminal) NS_IMETHODIMP nsLocalFile::Clone(nsIFile **file) { - nsresult rv; - char * aFilePath; - GetPath(&aFilePath); - - nsCOMPtr localFile; - - rv = NS_NewLocalFile(aFilePath, mFollowSymlinks, getter_AddRefs(localFile)); - nsMemory::Free(aFilePath); + *file = nsnull; - if (NS_SUCCEEDED(rv) && localFile) - { - return localFile->QueryInterface(NS_GET_IID(nsIFile), (void**)file); - } + nsLocalFile *localFile = new nsLocalFile(*this); + if (localFile == NULL) + return NS_ERROR_OUT_OF_MEMORY; + + localFile->mRefCnt = 0; + + *file = localFile; + NS_ADDREF(*file); - return rv; + return NS_OK; } NS_IMETHODIMP diff --git a/mozilla/xpcom/io/nsLocalFileUnix.cpp b/mozilla/xpcom/io/nsLocalFileUnix.cpp index 6dcd8770c59..75b950c9cdc 100644 --- a/mozilla/xpcom/io/nsLocalFileUnix.cpp +++ b/mozilla/xpcom/io/nsLocalFileUnix.cpp @@ -243,13 +243,11 @@ nsLocalFile::Clone(nsIFile **file) CHECK_mPath(); NS_ENSURE_ARG(file); - nsCOMPtr localFile = new nsLocalFile(); + nsLocalFile *localFile = new nsLocalFile(*this); if (!localFile) return NS_ERROR_OUT_OF_MEMORY; - nsresult rv = localFile->InitWithPath(mPath); - if (NS_FAILED(rv)) - return rv; + localFile->mRefCnt = 0; *file = localFile; NS_ADDREF(*file);