commit fd1784437a94d107c789fcff6107fdd94959d4c3 Author: Kathy Brade <br...@pearlcrescent.com> Date: Wed Nov 20 16:38:02 2013 -0500
fixup! Change the default Firefox profile directory to be TBB-relative. Use correct profile directory path when ./ is in the app dir. For example, this happens if you start the browser via ./Contents/MacOS/firefox --- toolkit/xre/nsXREDirProvider.cpp | 11 ++++++++++- xpcom/io/nsAppFileLocationProvider.cpp | 11 ++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/toolkit/xre/nsXREDirProvider.cpp b/toolkit/xre/nsXREDirProvider.cpp index 0e79cd7..3e047e1 100644 --- a/toolkit/xre/nsXREDirProvider.cpp +++ b/toolkit/xre/nsXREDirProvider.cpp @@ -1143,11 +1143,20 @@ nsXREDirProvider::GetUserDataDirectoryHome(nsIFile** aFile, bool aLocal) levelsToRemove += 4; #endif while (localDir && (levelsToRemove > 0)) { + // When crawling up the hierarchy, components named "." do not count. + nsAutoCString removedName; + rv = localDir->GetNativeLeafName(removedName); + NS_ENSURE_SUCCESS(rv, rv); + bool didRemove = !removedName.Equals("."); + + // Remove a directory component. nsCOMPtr<nsIFile> parentDir; rv = localDir->GetParent(getter_AddRefs(parentDir)); NS_ENSURE_SUCCESS(rv, rv); localDir = parentDir; - --levelsToRemove; + + if (didRemove) + --levelsToRemove; } if (!localDir) diff --git a/xpcom/io/nsAppFileLocationProvider.cpp b/xpcom/io/nsAppFileLocationProvider.cpp index d42f8b5..8d92c5f 100644 --- a/xpcom/io/nsAppFileLocationProvider.cpp +++ b/xpcom/io/nsAppFileLocationProvider.cpp @@ -305,11 +305,20 @@ NS_METHOD nsAppFileLocationProvider::GetProductDirectory(nsIFile **aLocalFile, b levelsToRemove += 4; #endif while (localDir && (levelsToRemove > 0)) { + // When crawling up the hierarchy, components named "." do not count. + nsAutoCString removedName; + rv = localDir->GetNativeLeafName(removedName); + NS_ENSURE_SUCCESS(rv, rv); + bool didRemove = !removedName.Equals("."); + + // Remove a directory component. nsCOMPtr<nsIFile> parentDir; rv = localDir->GetParent(getter_AddRefs(parentDir)); NS_ENSURE_SUCCESS(rv, rv); localDir = parentDir; - --levelsToRemove; + + if (didRemove) + --levelsToRemove; } if (!localDir) _______________________________________________ tor-commits mailing list tor-commits@lists.torproject.org https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits