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