From 418071ba652c9c3a2a2d664f9e228e0bcb8cb499 Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Sat, 17 Aug 2013 09:22:42 +0200 Subject: [PATCH] MIME DB support: avoid static initialization order issue --- src/kits/storage/mime/database_support.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/kits/storage/mime/database_support.cpp b/src/kits/storage/mime/database_support.cpp index 371a184e50..ce1e0d06c4 100644 --- a/src/kits/storage/mime/database_support.cpp +++ b/src/kits/storage/mime/database_support.cpp @@ -97,12 +97,15 @@ static const directory_which kBaseDirectoryConstants[] = { }; static pthread_once_t sDefaultDatabaseLocationInitOnce = PTHREAD_ONCE_INIT; -static DatabaseLocation sDefaultDatabaseLocation; +static DatabaseLocation* sDefaultDatabaseLocation = NULL; static void init_default_database_location() { + static DatabaseLocation databaseLocation; + sDefaultDatabaseLocation = &databaseLocation; + for (size_t i = 0; i < sizeof(kBaseDirectoryConstants) / sizeof(kBaseDirectoryConstants[0]); i++) { @@ -116,7 +119,7 @@ init_default_database_location() continue; directoryPath += "/mime_db"; - sDefaultDatabaseLocation.AddDirectory(directoryPath); + databaseLocation.AddDirectory(directoryPath); } } @@ -126,7 +129,7 @@ default_database_location() { pthread_once(&sDefaultDatabaseLocationInitOnce, &init_default_database_location); - return &sDefaultDatabaseLocation; + return sDefaultDatabaseLocation; }