all OS functions should be "nothrow @trusted @nogc"
Timon Gehr via Digitalmars-d
digitalmars-d at puremagic.com
Thu Jul 27 04:27:53 PDT 2017
On 27.07.2017 02:11, Steven Schveighoffer wrote:
> On 7/26/17 7:56 PM, Andrei Alexandrescu wrote:
>> On 07/26/2017 06:16 PM, Steven Schveighoffer wrote:
>>> So I guess I should restate that we can assume no implementations
>>> exist that intentionally cause UB when stream is NULL (as in Timon's
>>> example). Either they check for null, and handle gracefully, or don't
>>> check and segfault.
>>
>> No need to worry about that at all. If worse comes to worst - i.e. we
>> do port to such an implementation - we can always provide a thin
>> wrapper that checks for NULL then calls the native function. No need
>> to change the signatures. -- Andrei
>
> Hm.. so you mean:
>
> pragma(mangle, "fgetc")
> private extern(C) int real_fgetc(FILE * stream)
>
> extern(D) int fgetc(FILE *stream) @trusted
> {
> if(stream == null) assert(0);
> return real_fgetc(stream);
> }
>
> Yeah, that should work well actually. Nice!
>
> -Steve
That works but it changes the signature. (extern(D) vs. extern(C)).
More information about the Digitalmars-d
mailing list