I seem to be able to crash writefln

Joel Christensen joelcnz at gmail.com
Wed Mar 9 18:39:33 PST 2011


On 10-Mar-11 1:04 PM, spir wrote:
> On 03/10/2011 12:19 AM, Joel Christensen wrote:
>> This is on Windows 7. Using a def file to stop the terminal window
>> coming up.
>>
>> win.def
>> EXETYPE NT
>> SUBSYSTEM WINDOWS
>>
>> bug.d
>> import std.stdio;
>> import std.string;
>>
>> void main() {
>> auto f = File( "z.txt", "w" );
>> scope( exit )
>> f.close;
>> string foo = "bar";
>> foreach( n; 0 .. 10 ) {
>> writefln( "%s", foo );
>> f.write( format( "count duck-u-lar: %s\n", n ) );
>> }
>> }
>>
>> output (from in z.txt):
>> count duck-u-lar: 0
>
> What do you mean, crashing writefln? What do you get on the terminal?
> About the file, there seems to be a bug --but unrelated to writefln. The
> file is closed, I guess because of scope(exit), before the output stream
> is flushed. If this is the right interpretation, then there is a
> precedence issue; scope's action should not be performed before the
> func's own action is actually completed.
>
> Denis

It quits out the at about the 2nd attempt at printing text (that doesn't 
go to the terminal because of the def file argument in the compile 
arguments).

I didn't see any problem with the File stuff, I can use writeln and it 
does all ten iterations, (not printing any thing of course). I used 
write instead of writeln, write doesn't flush like writeln, maybe.

I noticed my program that had been running fine before, but suddenly 
bailed out almost strait away since I used the def file in the compile 
arguments.

Joel


More information about the Digitalmars-d-learn mailing list