diff --git a/build/Jamfile b/build/Jamfile index 855a3403..5b9a394a 100644 --- a/build/Jamfile +++ b/build/Jamfile @@ -4,4 +4,23 @@ SOURCES = c_regex_traits c_regex_traits_common cpp_regex_traits cregex fileiter posix_api regex regex_debug regex_synch w32_regex_traits wide_posix_api ; -lib libboost_regex : ../src/$(SOURCES).cpp : $(BOOST_ROOT) ; +lib libboost_regex$(SUFLIB) : ../src/$(SOURCES).cpp + : + $(BOOST_ROOT) + BOOST_RE_NO_LIB=1 + : + debug release + dynamic + ; + + +dll libboost_regex$(SUFDLL[1]) : ../src/$(SOURCES).cpp + : + $(BOOST_ROOT) + BOOST_RE_BUILD_DLL=1 + : + debug release + dynamic + ; + + diff --git a/example/timer/regex_timer.cpp b/example/timer/regex_timer.cpp index feae725f..4ce416e9 100644 --- a/example/timer/regex_timer.cpp +++ b/example/timer/regex_timer.cpp @@ -117,9 +117,9 @@ int main() std::copy(s1.begin(), s1.end(), string_out_iterator(ws1)); #endif try{ - ex.assign(s1.begin(), s1.end()); + ex.assign(s1); #ifndef BOOST_RE_NO_WCSTRING - wex.assign(ws1.begin(), ws1.end()); + wex.assign(ws1); #endif } catch(std::exception& e) diff --git a/src/w32_regex_traits.cpp b/src/w32_regex_traits.cpp index f2c8d907..17857e74 100644 --- a/src/w32_regex_traits.cpp +++ b/src/w32_regex_traits.cpp @@ -272,6 +272,10 @@ void BOOST_RE_CALL w32_traits_base::do_init() } buf[map_size] = (char)0; GetStringTypeA(GetUserDefaultLCID(), CT_CTYPE1, buf, map_size, class_map); + for(i = 0; i < map_size; ++i) + { + class_map[i] &= char_class_win; + } class_map['_'] |= char_class_underscore; LCMapStringA(GetUserDefaultLCID(), LCMAP_LOWERCASE, buf, map_size, lower_case_map, map_size); // @@ -654,7 +658,7 @@ bool BOOST_RE_CALL w32_regex_traits::do_iswclass(wchar_t c, boost::uint if(f & char_class_unicode) return true; else if(isPlatformNT && GetStringTypeW(CT_CTYPE1, &c, 1, &mask)) - return BOOST_RE_MAKE_BOOL(mask & f); + return BOOST_RE_MAKE_BOOL(mask & f &char_class_win); else if((f & char_class_graph) == char_class_graph) return true; // all wide characters are considered "graphics" return false;