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

H. S. Teoh via Digitalmars-d digitalmars-d at puremagic.com
Tue Aug 1 13:50:02 PDT 2017


On Tue, Aug 01, 2017 at 10:39:35PM +0200, Marco Leise via Digitalmars-d wrote:
> Am Tue, 1 Aug 2017 10:50:59 -0700
> schrieb "H. S. Teoh via Digitalmars-d"
> <digitalmars-d at puremagic.com>:
> 
> > On Tue, Aug 01, 2017 at 05:12:38PM +0000, w0rp via Digitalmars-d wrote:
> > > Direct OS function calls should probably all be treated as unsafe,
> > > except for rare cases where the behaviour is very well defined in
> > > standards and in actual implementations to be safe. The way to get
> > > safe functions for OS functionality is to write wrapper functions
> > > in D which prohibit unsafe calls.  
> > 
> > +1.
> 
> I think I got it now!
> 
> 	size_t strlen_safe(in char[] str) @trusted
> 	{
> 		foreach (c; str)
> 			if (!c)
> 				return strlen(str.ptr);
> 		return str.length;
> 	}
> 
>   :o)
[...]

LOL, that's laughably inefficient.  Instead of calling strlen, you might
as well have just looped with an index and returned the index. :-P

	foreach (i, c; str)
		if (!c) return i;

Oh wait, so we didn't need the wrapper after all. :-P


T

-- 
It's amazing how careful choice of punctuation can leave you hanging:


More information about the Digitalmars-d mailing list