If the sentinel failed (e.g. due to having reached
EOF before) or an exception was caught it failed to
do that.
While it seems (unfortunately!) not required by the
specification, libstdc++ does 0-terminate and not
doing so risks creating security issues in applications.
---
include/istream | 6
If the sentinel failed (e.g. due to having reached
EOF before) or an exception was caught it failed to
do that.
The C++14 standard says:
"In any case, if n is greater than zero, it then stores
a null character (using charT()) into the next
successive location of the array."
Other implementations
On Mon, Nov 20, 2017 at 11:02:13AM -0800, Volodymyr Sapsai wrote:
> > catch (...)
> > {
> > +if (__n > 0)
> > +*__s = char_type();
> > this->__set_badbit_and_consider_rethrow();
> > }
>
> or maybe something else?
That one (note that the
On 20 November 2017 22:19:04 CET, Volodymyr Sapsai wrote:
>On Nov 20, 2017, at 11:32, Reimar Döffinger
>wrote:
>>
>> On Mon, Nov 20, 2017 at 11:02:13AM -0800, Volodymyr Sapsai wrote:
catch (...)
{
+if (__n > 0)
+
On 21.11.2017, at 03:54, Volodymyr Sapsai wrote:
>
>> If (exceptions()) != 0 then the exception is rethrown.
> And looks like libstdc++ rethrows exception even if badbit is not set.
Thanks for looking all that up, I was in a hurry.
> If you feel comfortable, I can finish
On Wed, Nov 15, 2017 at 11:35:56AM -0800, Volodymyr Sapsai wrote:
> On Nov 12, 2017, at 12:37, Reimar Döffinger wrote:
> libc++ can be built with exceptions enabled or disabled (see
> LIBCXX_ENABLE_EXCEPTIONS
>
onditions (specified formally
or in natural language) for at least parts easy to specify in such a way
to allow at least partial formal verification or proof of correctness
isn't exactly state-of-the-art either.
Kind regards,
Reimar Döffinger
> > On Oct 4, 2017, at 12:07, Reimar Döffinger via cfe