On Tuesday, 2 October 2012 at 21:30:35 UTC, Andrej Mitrovic wrote:
On 10/2/12, Walter Bright <newshou...@digitalmars.com> wrote:
On 9/30/2012 11:31 AM, deadalnix wrote:
If you know that a string is 0 terminated, you can easily create a slice
from it as follow :

char* myZeroTerminatedString;
char[] myZeroTerminatedString[0 .. strlen(myZeroTerminatedString)];
Since %zs is inherently unsafe, it
hides such unsafety in a commonly used library function, which will infect everything else that transitively calls writefln with unsafety.

This makes %zs an unacceptable feature.

How does it hide anything if you have to explicitly mark the format specifier as %zs? It would be documented, just like it's documented that passing pointers to garbage-collected memory to the C side is
inherently unsafe.

writefln cannot be @safe if it has to support an unsafe format specifier. It's "hidden" because it affects every call to writefln, even if it doesn't use the unsafe format specifier.

Reply via email to