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]
This commit is contained in:
Christopher Kohlhoff
2007-04-06 09:12:28 +00:00
parent 111c30d99e
commit da0da6dc28

View File

@@ -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;