Opened 14 years ago
Closed 14 years ago
#2403 closed Bugs (wontfix)
Conversion of fixed size char array by lexical_cast
| Reported by: | Chard | Owned by: | nasonov |
|---|---|---|---|
| Milestone: | Component: | lexical_cast | |
| Version: | Boost 1.34.1 | Severity: | Problem |
| Keywords: | lexical_cast fixed char array | Cc: |
Description
I can't say if this counts as a bug, since it is very contrived, but it does have a possibly unintended side-effect.
If lexical_cast is used to convert a fixed size char array, it will happily compile but, it will be treated as a null-terminated char array.
This means it will run off the end of the fixed length array.
E.g.
struct Data
{
Data()
{
fixedLengthField[0] = '0';
fixedLengthField[1] = '1';
fixedLengthField[2] = '2';
fixedLengthField[3] = '3';
moreData[0] = 'X';
moreData[1] = '\0';
}
// pack(1)
char fixedLengthField[4];
char moreData[2];
};
void
test()
{
Data d;
std::string x = boost::lexical_cast<std::string>(d.fixedLengthField);
assert(x.size() == sizeof(d.fixedLengthField));
}
Note:
See TracTickets
for help on using tickets.
