all OS functions should be "nothrow @trusted @nogc"
Steven Schveighoffer via Digitalmars-d
digitalmars-d at puremagic.com
Wed Jul 26 17:11:57 PDT 2017
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
More information about the Digitalmars-d
mailing list