writeln() assertion failed in hybrid x64
hane via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Fri Sep 5 00:45:30 PDT 2014
On Friday, 5 September 2014 at 07:22:23 UTC, hane wrote:
> On Thursday, 4 September 2014 at 15:10:22 UTC, Jorge A. S.
> wrote:
>> I'm having an error related to yours: when I call writeln
>> function in a closed stdout I will get a segfault message.
>> Example:
>>
>> import std.stdio;
>>
>> void main() {
>> stdout.close();
>> write("hello\n");
>> }
>>
>> The code above will crash with segfault buf the following code
>> will raise an exception instead:
>>
>> import std.stdio;
>>
>> void main() {
>> stdout.close();
>> stdout.write("hello\n");
>> }
>>
>> In one of the specializations of the write function in the
>> std.stdio (the call site that you showed in your post) no
>> check for closed stdout (when stdout._p is null) is done. I
>> can't say if this is a bug in the write function or the
>> desired behaviour (I'm a novice here).
>>
>
> With DMD of git master, the latter code seems to raise
> Exception (stdio.d(2247): Enforcement failed) instead of
> segfault.
Oops, I meant 'former' of course.
More information about the Digitalmars-d-learn
mailing list