Opened 18 years ago
Closed 17 years ago
#293 closed Bugs (None)
tokenizer and signed char
| Reported by: | nobody | Owned by: | Markus Schöpflin |
|---|---|---|---|
| Milestone: | Component: | None | |
| Version: | None | Severity: | |
| Keywords: | Cc: |
Description
boost::tokenizer incorrect works on platforms on which
plain char is signed. For example, at least in
boost::char_delimiters_separator::is_nonret should be
explicit conversion from char type to int type.
Something like this std::isspace
(std::char_traits<Char>::to_int_type(E)). Minimal
reproducer for this issue which uses Russian letters
results in assert in MSVC 7.1:
// cl /Zi /MDd -D_DEBUG test.cpp
#include <boost\tokenizer.hpp>
#include <string>
#include <iostream>
using namespace std;
using namespace boost;
int main()
{
string s = "4@02AB2C9 <8@!";
tokenizer<> tok(s);
for (tokenizer<>::iterator beg=tok.begin(); beg!
=tok.end();++beg)
{
cout << *beg << "\n";
}
}
Change History (4)
comment:2 by , 18 years ago
Logged In: YES
user_id=1098099
Minimal reproducer without national letters:
#include <boost\tokenizer.hpp>
#include <string>
#include <iostream>
using namespace std;
using namespace boost;
int main()
{
string s = "Hello \xE4 world!";
tokenizer<> tok(s);
for (tokenizer<>::iterator beg=tok.begin(); beg!=tok.end
();++beg)
{
cout << *beg << "\n";
}
}
comment:3 by , 17 years ago
Logged In: YES user_id=91733 I could not reproduce this with the current 1.33 branch using cygwin and either -fsigned-char or -funsigned-char. Your reproduces always worked as expected. Could you please check if the problem still persists?
comment:4 by , 17 years ago
| Status: | assigned → closed |
|---|
Logged In: YES user_id=1312539 This Tracker item was closed automatically by the system. It was previously set to a Pending status, and the original submitter did not respond within 14 days (the time period specified by the administrator of this Tracker).
Note:
See TracTickets
for help on using tickets.
