all OS functions should be "nothrow @trusted @nogc"
Timon Gehr via Digitalmars-d
digitalmars-d at puremagic.com
Wed Jul 26 03:05:47 PDT 2017
On 26.07.2017 02:56, Andrei Alexandrescu wrote:
>>
>> What Moritz is saying is that the following implementation of fclose
>> is correct according to the C standard:
>>
>> int fclose(FILE *stream){
>> if(stream == NULL){
>> return go_wild_and_corrupt_all_the_memory();
>> }else{
>> return actually_close_the_file(stream);
>> }
>> }
>
> I'd think that would be the case, but failed to find a fgetc
> implementation that mentions it's undefined for a null FILE*. Is there a
> link? Thx. -- Andrei
It's implicit. In C, whenever you pass something that is outside the
interface specification, you get UB. Also, in C, there is no way to get
a segmentation fault except for UB, and fgetc(NULL) segfaults with glibc.
More information about the Digitalmars-d
mailing list