From ef73044e42948214832dd11dd3326b738f816eb6 Mon Sep 17 00:00:00 2001 From: "agl@chromium.org" Date: Thu, 11 Mar 2010 15:25:54 +0000 Subject: POSIX: don't allocate memory after forking. Previously we would allocate memory in the child process. However, the allocation might have happened while the malloc lock was held, resulting in a deadlock. This patch removes allocation from the child but probably makes Mac's startup time slower until a Mac person can implement dir_reader_posix.h. TEST=Unittest for new code BUG=36678 http://codereview.chromium.org/672003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@41275 0039d316-1c4b-4281-b951-d872f2087c98 --- base/file_descriptor_shuffle.h | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'base/file_descriptor_shuffle.h') diff --git a/base/file_descriptor_shuffle.h b/base/file_descriptor_shuffle.h index e0cb88b..e1c93cd 100644 --- a/base/file_descriptor_shuffle.h +++ b/base/file_descriptor_shuffle.h @@ -69,9 +69,13 @@ typedef std::vector InjectiveMultimap; bool PerformInjectiveMultimap(const InjectiveMultimap& map, InjectionDelegate* delegate); -static inline bool ShuffleFileDescriptors(const InjectiveMultimap& map) { +bool PerformInjectiveMultimapDestructive(InjectiveMultimap* map, + InjectionDelegate* delegate); + +// This function will not call malloc but will mutate |map| +static inline bool ShuffleFileDescriptors(InjectiveMultimap* map) { FileDescriptorTableInjection delegate; - return PerformInjectiveMultimap(map, &delegate); + return PerformInjectiveMultimapDestructive(map, &delegate); } } // namespace base -- cgit v1.1