From 6b3cc48bb63de89c0428bd6522244b2e21deb885 Mon Sep 17 00:00:00 2001 From: David Rose Date: Thu, 1 Sep 2011 22:33:08 +0000 Subject: [PATCH] fix static init crash --- dtool/src/dtoolutil/unicodeLatinMap.cxx | 9 +++++---- dtool/src/dtoolutil/unicodeLatinMap.h | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/dtool/src/dtoolutil/unicodeLatinMap.cxx b/dtool/src/dtoolutil/unicodeLatinMap.cxx index 758a39da97..5483df4138 100644 --- a/dtool/src/dtoolutil/unicodeLatinMap.cxx +++ b/dtool/src/dtoolutil/unicodeLatinMap.cxx @@ -15,7 +15,7 @@ #include "unicodeLatinMap.h" bool UnicodeLatinMap::_initialized = false; -UnicodeLatinMap::ByCharacter UnicodeLatinMap::_by_character; +UnicodeLatinMap::ByCharacter *UnicodeLatinMap::_by_character; const UnicodeLatinMap::Entry *UnicodeLatinMap::_direct_chars[UnicodeLatinMap::max_direct_chars]; static const UnicodeLatinMap::Entry latin_map[] = { @@ -1320,8 +1320,8 @@ look_up(wchar_t character) { } else { ByCharacter::const_iterator ci; - ci = _by_character.find(character); - if (ci != _by_character.end()) { + ci = _by_character->find(character); + if (ci != _by_character->end()) { return (*ci).second; } return NULL; @@ -1337,6 +1337,7 @@ look_up(wchar_t character) { void UnicodeLatinMap:: init() { if (!_initialized) { + _by_character = new ByCharacter; for (int i = 0; i < latin_map_length; i++) { const UnicodeLatinMap::Entry *entry = &latin_map[i]; @@ -1346,7 +1347,7 @@ init() { if (entry->_character < max_direct_chars) { _direct_chars[entry->_character] = entry; } else { - _by_character[entry->_character] = entry; + (*_by_character)[entry->_character] = entry; } } _initialized = true; diff --git a/dtool/src/dtoolutil/unicodeLatinMap.h b/dtool/src/dtoolutil/unicodeLatinMap.h index 8c7ee8dac2..a221cea15d 100644 --- a/dtool/src/dtoolutil/unicodeLatinMap.h +++ b/dtool/src/dtoolutil/unicodeLatinMap.h @@ -134,7 +134,7 @@ private: static bool _initialized; typedef phash_map > ByCharacter; - static ByCharacter _by_character; + static ByCharacter *_by_character; enum { max_direct_chars = 256 }; static const Entry *_direct_chars[max_direct_chars]; };