[regex] expression: string iterator not dereferencable

Good day. I use boost::regex with ICU. When I try call u32regex_match for symbol with code 0xDA10, I get an expression "string iterator not dereferencable (xstring, line 112)". If I use other symbol (for example, "X") it works correctly. If I use wregex (wighout ICU) it works correctly too. What could be the problem? The code: #include "stdafx.h" #include <iostream> #include <conio.h> #include <boost/regex.hpp> #include <boost/regex/icu.hpp> int _tmain(int argc, _TCHAR* argv[]) { boost::u32regex delimiterRegex = boost::make_u32regex(L"\\W <file:///\\W> "); std::wstring symbol = L"X"; symbol[0] = wchar_t(0xDA10); // <= for this symbol if (boost::u32regex_match(symbol, delimiterRegex)) // <= assertion here std::cout << "success" << std::endl; else std::cout << "not match\n"; _getch(); return 0; } I checked it for boost_1_47_0. MSVC 2008 compiler. Thank you in advance, Slava Mitin

I use boost::regex with ICU. When I try call u32regex_match for symbol with code 0xDA10, I get an expression "string iterator not dereferencable (xstring, line 112)". If I use other symbol (for example, "X") it works correctly. If I use wregex (wighout ICU) it works correctly too. What could be the problem?
It's a bug - the iterator adapters get confused because "\xDA10" is not a valid Unicode sequence - will fix Trunk shortly, and hopefully get the fix into the next release. Regards, John.
participants (2)
-
John Maddock
-
Mitin Slava