Alan Gray wrote:
Hi John,
I cannot reproduce the problem in a sample program (yet). The symptions appear to be stack corruption. In the function
template <class charT> w32_regex_traits_char_layer<charT>::w32_regex_traits_char_layer(::boost::re_detail::lcid_type l) : w32_regex_traits_base<charT>(l) {
line 187: w32_regex_traits.hpp
the line
std::string cat_name(w32_regex_traits<charT>::get_catalog_name());
executes ok, looking at the debugger, _Mysize = 0 , _Myres = 15 which is expected. Then stepping into
if(cat_name.size())
inside the call, _mysize is now equal to some crazy number. The interesting point is that the debugger steps to the line
The only thing that springs to mind is a binary compartibitity issue: either linking to the wrong regex lib build, multiple std lib's linked to your app, or some obscure compiler option that's rendered the prebuilt lib's incompatible with your app. As a quick test try adding the regex source directly to your project and building with BOOST_REGEX_NO_LIB defined. (Note this will make your app a lot "fatter" than it needs to be, but it's a useful sanity check). HTH, John.