[string/range] 1.34.1 -> 1.35.0 problem

After rebuilding an app with Boost 1.35 (using Visual Studio 2008/VC9 [creating a 32-bit Unicode executable] on Windows XP SP2), some code (only in a release build) calling string_algo causes assertion failures at iterator_range.hpp lines 265 and 283 (iterator_range::begin and iterator_range::empty). The assertions are a result of calls to replace_all and istarts_with (in 2 places; each call in different functions and called multiple times from a single thread; thread data used in the calls is private to this thread). If all of these calls are removed: replace_all(<wstring variable>, L"/", L"\\"); if (istarts_with(<function returning wstring>, <function returning wstring>) return; if (istarts_with(<wstring variable>, L"www.")) <wstring variable>.erase(0, 4); the assertions do not occur. If any or all are left in, some assertions occur. When building w/ Boost 1.34.1, the original code works as expected with no assertions. Before I try to construct a repro case, does anyone have any ideas on what could be wrong? Thanks. -- --------------------- Kyle Alons http://www.kinook.com

Hi, Can you send me the callstack (it's enough to include the calls inside the boost) and the input parameters the are used when assertion occurs? Thanks, Pavol. Kyle Alons wrote:
After rebuilding an app with Boost 1.35 (using Visual Studio 2008/VC9 [creating a 32-bit Unicode executable] on Windows XP SP2), some code (only in a release build) calling string_algo causes assertion failures at iterator_range.hpp lines 265 and 283 (iterator_range::begin and iterator_range::empty).
The assertions are a result of calls to replace_all and istarts_with (in 2 places; each call in different functions and called multiple times from a single thread; thread data used in the calls is private to this thread). If all of these calls are removed:
replace_all(<wstring variable>, L"/", L"\\");
if (istarts_with(<function returning wstring>, <function returning wstring>) return;
if (istarts_with(<wstring variable>, L"www.")) <wstring variable>.erase(0, 4);
the assertions do not occur. If any or all are left in, some assertions occur.
When building w/ Boost 1.34.1, the original code works as expected with no assertions. Before I try to construct a repro case, does anyone have any ideas on what could be wrong? Thanks.
participants (2)
-
Kyle Alons
-
Pavol Droba