Актуальный сизиф. gcc 4.1.1 20060928 (ALT Linux, build 4.1.1-alt9) Есть следующий код int main( int argc, char** argv ) { try { boost::regex re("(\\w+):\\/\\/(([^:]+?)(:(.+))?@)?([^:\\/]+)(:(\\d+))?((\\/.+?)*)(\\?(.+?))?(#(.+))?"); boost::match_results<std::string::const_iterator> what; std::string first("http://breeze@abc.ru/banner.jsp?keywords=%CC%E5%E3%E0%F4%EE%ED&id=1&ip=1.1.1.1&version=1#123"); boost::regex::locale_type loc("ru_RU.cp1251"); // re.imbue( loc ); for( int i=0; i<5; ++i ) { if( !boost::regex_match(boost::algorithm::trim_copy(first), what, re) ) continue; cerr << "res = " << what[12].str() << endl; string tmp = boost::algorithm::trim_copy(first); if( !boost::regex_match(tmp, what, re) ) continue; cerr << "res2 = " << what[12].str() << endl; } re.imbue( loc ); } catch (std::exception& ex) { cerr << "UGLY STANDART ERROR: " << ex.what() << endl; return -1; } catch(...) { cerr << "UGLY ERROR: UNHANDLED EXCEPTION" << endl; return -1; } return 0; } Данные код просто парсит URL при помощи boost::regex, есть две проблемы: 1. Строки "res=..." и "res2=..." должны быть одинаковыми, реально получается res = keywords=%CC%E5%E3%E0%F4%EE%ED&iи╟Aь╥╟Aь╥.1&version=1 res2 = keywords=%CC%E5%E3%E0%F4%EE%ED&id=1&ip=1.1.1.1&version=1 т.е. в строке "res=..." присутствует явный мусор Подобное поведение встречается не только при работе с boost, но и с произвольными объектами в случае, когда результат функции не сохраняется явно в какой-то переменной, а непосредственно передаётся в другую функцию PS Возможно я обратился не по адресу - подскажите, куда следует обратиться Steps to Reproduce: make && run
У меня подозрение что где-то внутри переполнение стека.
Created attachment 1662 [details] Исходный код и Makefile Просто для удобства добавил полный код тестового приложения
Что-то прояснилось?
*** Bug 10148 has been marked as a duplicate of this bug. ***
Я думаю что это ошибка в тестовой программе. Если вы подозреваете ошибку в компиляторе, просьба представить тест попроще и без использования boost.
Недостаточно информации, закрываю.