Opened 18 years ago
Last modified 13 years ago
#287 closed Bugs (fixed)
wrong usage of ios_base::narrow — at Version 1
Reported by: | vandrejev | Owned by: | az_sw_dude |
---|---|---|---|
Milestone: | Boost 1.40.0 | Component: | date_time |
Version: | None | Severity: | Problem |
Keywords: | Cc: |
Description (last modified by )
/cvsroot/boost/boost/boost/date_time/date_parsing.hpp revision 1.18, lines 207, 214 std::stringstream has char_type typedef evidently equal to char, not wchar_t, so in std::stringstream::narrow function the first argument has type char and in the call ss << ss.narrow(*beg++, 'X'); *beg will be converted from wchar_t to char before call to narrow will be made. I suggest the following patch: diff -c -r1.18 date_parsing.hpp *************** *** 207,214 **** wchar_t) { std::stringstream ss(""); while(beg != end) { ! ss << ss.narrow(*beg++, 'X'); // 'X' will cause exception to be thrown } return parse_date<date_type>(ss.str()); } --- 207,215 ---- wchar_t) { std::stringstream ss(""); + std::locale loc; while(beg != end) { ! ss << std::use_facet<std::ctype<wchar_t> > (loc).narrow(*beg++, 'X'); } return parse_date<date_type>(ss.str()); }
Change History (1)
comment:1 by , 13 years ago
Description: | modified (diff) |
---|---|
Milestone: | → Boost 1.40.0 |
Severity: | → Problem |
Note:
See TracTickets
for help on using tickets.
Marshall sez: looking at the code in trunk, it appears that this patch has been (more or less) applied. I'm not sure about the constructor call to std:locale() for each character, though. {{
#if !defined(BOOST_DATE_TIME_NO_LOCALE)
#else
#endif
}}