Re: What's the fastest way to check if a slice points to static data
ketmar via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Sat Jun 24 07:18:33 PDT 2017
Petar Kirov [ZombineDev] wrote:
>> Please note that not all static immutable strings have to be null
>> terminated.
>> It is possible to generate a string at ctfe which may appear the same as
>> string literal, but does not have the \0 at the end.
>
> But in that case, the check `s.ptr[s.length] == 0` in fastStringZ
> would do the trick, right?
with the edge case when something like the code i posted below managed to
make `a` perfectly aligned with r/o area, and you got segfault by accising
out-of-bounds byte.
> BTW, are you sure? AFAIU, it doesn't matter if the CTFE engine returns a
> non-null-terminated string expression, since the backend or the glue layer
> would write it to the object file as if it was a null-terminated string.
immutable ubyte[2] a = [65,66];
enum string s = cast(string)a;
immutable ubyte[2] b = [67,68]; // just to show you that there is no zero
void main () {
assert(s[$-1] == 0);
}
More information about the Digitalmars-d-learn
mailing list