From da0da6dc2887497df5eefe14c813cdecabafcb19 Mon Sep 17 00:00:00 2001 From: Christopher Kohlhoff Date: Fri, 6 Apr 2007 09:12:28 +0000 Subject: [PATCH] Make init_decoders[] a function-local static, rather than global, to avoid problems with order of initialisation of globals across translation units. Thanks to Oleg Kosenkov for reporting this issue and suggesting a fix. [SVN r37380] --- src/error_code.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/error_code.cpp b/src/error_code.cpp index 45099eb..155e0e0 100644 --- a/src/error_code.cpp +++ b/src/error_code.cpp @@ -261,18 +261,18 @@ namespace decoder_element() : ed(0), md(0), wmd(0) {} }; - const decoder_element init_decoders[] = -#ifdef BOOST_WINDOWS_API - { decoder_element( errno_ed, errno_md, errno_wmd ), - decoder_element( windows_ed, windows_md, windows_wmd) }; -#else - { decoder_element( errno_ed, errno_md, errno_wmd ) }; -#endif - typedef std::vector< decoder_element > decoder_vec_type; decoder_vec_type & decoder_vec() { + static const decoder_element init_decoders[] = +#ifdef BOOST_WINDOWS_API + { decoder_element( errno_ed, errno_md, errno_wmd ), + decoder_element( windows_ed, windows_md, windows_wmd) }; +#else + { decoder_element( errno_ed, errno_md, errno_wmd ) }; +#endif + static decoder_vec_type dv( init_decoders, init_decoders + sizeof(init_decoders)/sizeof(decoder_element)); return dv;