[Issue 10344] New: Exiting _Dmain should flush all FILE*s and return nonzero on failure
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Wed Jun 12 09:33:34 PDT 2013
http://d.puremagic.com/issues/show_bug.cgi?id=10344
Summary: Exiting _Dmain should flush all FILE*s and return
nonzero on failure
Product: D
Version: D2
Platform: All
OS/Version: All
Status: NEW
Severity: normal
Priority: P2
Component: DMD
AssignedTo: nobody at puremagic.com
ReportedBy: andrei at erdani.com
--- Comment #0 from Andrei Alexandrescu <andrei at erdani.com> 2013-06-12 09:33:32 PDT ---
Consider:
// file test.d
import std.stdio;
void main()
{
writeln("test");
}
This program may be run with a file that is not writable like this:
./test 1</dev/null
Although writeln() is checked, the program appears to succeed (returning 0 to
the OS) because of buffering: (a) /dev/null is not line-buffered, and (b)
flushing files upon exiting the program is unchecked.
To wit, this will indeed work correctly in all scenarios:
// file test.d
import std.stdio;
int main()
{
writeln("test");
return fflush(null) != 0;
}
We should add the call to fflush to main() and return nonzero IF AND ONLY IF:
(a) fflush(null) fails, and (b) the program would have otherwise returned 0.
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
More information about the Digitalmars-d-bugs
mailing list