From 4a3e0cc2fd7c481b7b09ca3f7269641d43dcb0d5 Mon Sep 17 00:00:00 2001 From: "timeless%mozdev.org" Date: Wed, 12 Sep 2007 17:50:28 +0000 Subject: [PATCH] Bug 156814 If bookmark file is symlink, mozilla overwrites symlink with a file r=caillon sr=bz git-svn-id: svn://10.0.0.236/trunk@235823 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/suite/browser/src/nsBookmarksService.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/mozilla/suite/browser/src/nsBookmarksService.cpp b/mozilla/suite/browser/src/nsBookmarksService.cpp index f81e48ec87e..4155397ab50 100644 --- a/mozilla/suite/browser/src/nsBookmarksService.cpp +++ b/mozilla/suite/browser/src/nsBookmarksService.cpp @@ -5063,7 +5063,10 @@ nsBookmarksService::WriteBookmarks(nsFileSpec* aBookmarksFile, nsIRDFDataSource* if (NS_FAILED(rv = NS_NewISupportsArray(getter_AddRefs(parentArray)))) return rv; - nsFileSpec tempFile(*aBookmarksFile); + nsFileSpec bookmarksFile(*aBookmarksFile); + PRBool ignored; + bookmarksFile.ResolveSymlink(ignored); + nsFileSpec tempFile(bookmarksFile); tempFile.MakeUnique(); PRBool succeeded = PR_TRUE; @@ -5096,11 +5099,11 @@ nsBookmarksService::WriteBookmarks(nsFileSpec* aBookmarksFile, nsIRDFDataSource* // then trash the old bookmarks file and rename the temp file so it takes // its place. if (succeeded) { - char* bookmarksFileName = aBookmarksFile->GetLeafName(); + char* bookmarksFileName = bookmarksFile.GetLeafName(); char* tempBookmarksFileName = tempFile.GetLeafName(); // If tempFile == aBookmarksFile, we must not delete/rename if (nsCRT::strcmp(bookmarksFileName, tempBookmarksFileName)) { - aBookmarksFile->Delete(PR_FALSE); + bookmarksFile.Delete(PR_FALSE); tempFile.Rename(bookmarksFileName); }