Subject: Re: [Boost-bugs] [Boost C++ Libraries] #6160: support for (istream >> array < char >)
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2011-11-28 16:43:57
#6160: support for (istream >> array < char >)
------------------------------------+---------------------------------------
Reporter: giecrilj@⦠| Owner: marshall
Type: Feature Requests | Status: assigned
Milestone: To Be Determined | Component: array
Version: Boost 1.44.0 | Severity: Cosmetic
Resolution: | Keywords:
------------------------------------+---------------------------------------
Comment (by ne01026@â¦):
Replying to [comment:6 marshall]:
> Replying to [comment:4 ne01026@â¦]:
> > `char []` has unknown length, `array < char >` has known length,
therefore `>> array` is safer than `>> char []`, and my code, attached,
q.v., uses this information to prevent buffer overflow.
>
> `char []` has known length - sizeof is your friend here.
`sizeof (char [])` is undefined.
>
> I see where your code is using the length to prevent a buffer overflow -
but doing that at every stream extraction is error-prone, at best. It
seems to me that (famous last words) that if this were to be implemented,
it should never overflow the bounds of the array.
The extraction operator will not extract more characters than the array
length, minus one, so where is the error?
>
> Do you know if this was considered for std::array?
I do not know; however, given that std takes from boost and not the other
way round, I decided to put it here first. At least, the thing seems
obvious and straighforward to me. The standard library has special
semantics for (native) character arrays, and so should we.
I tried to discuss the matter at #boost and I was told to file an
enhancement, so here it is.
-- Ticket URL: <https://svn.boost.org/trac/boost/ticket/6160#comment:7> Boost C++ Libraries <http://www.boost.org/> Boost provides free peer-reviewed portable C++ source libraries.
This archive was generated by hypermail 2.1.7 : 2017-02-16 18:50:07 UTC