all OS functions should be "nothrow @trusted @nogc"

Steven Schveighoffer via Digitalmars-d digitalmars-d at puremagic.com
Wed Jul 26 04:22:59 PDT 2017


On 7/26/17 6:01 AM, Timon Gehr wrote:
> On 26.07.2017 03:09, Steven Schveighoffer wrote:
>> On 7/25/17 8:45 PM, Timon Gehr 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 think we can correctly assume no fclose implementations exist that 
>> do anything but access data pointed at by stream. Which means a 
>> segfault on every platform we support.
>>
>> On platforms that may not segfault, you'd be on your own.
>>
>> In other words, I think we can assume for any C functions that are 
>> passed pointers that dereference those pointers, passing null is 
>> safely going to segfault.
> 
> I'm not going to assume that.

Tell you what, when you find a D platform that this doesn't happen, we 
can fix it with a version statement ;)

-Steve


More information about the Digitalmars-d mailing list