[Bug 91] String literals not always properly zero-terminated

via D.gnu d.gnu at puremagic.com
Sun Oct 26 06:20:18 PDT 2014


http://bugzilla.gdcproject.org/show_bug.cgi?id=91

Peter Remmers <p.remmers at arcor.de> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |p.remmers at arcor.de

--- Comment #6 from Peter Remmers <p.remmers at arcor.de> ---
I must add that I also just stumbled upon this. I was about to file another bug
but then found this.

I think string literals should always be zero terminated, not just when used as
a parameter to a function that takes a char*.

Here is a quote from std/string.d (the toStringz() function):

     * Note that the compiler will put a 0 past the end of static
     * strings, and the storage allocator will put a 0 past the end
     * of newly allocated char[]'s.


This little test program works on DMD and LDC2, but fails on GDC:

int main(string[] argv)
{
    string s = "Hello"; // same with static string s = "Hello";
    assert(*(s.ptr + s.length - 1) == 'o'); // OK
    assert(*(s.ptr + s.length) == '\0');    // fails

    return 0;
}

I think it's a bug.

-- 
You are receiving this mail because:
You are watching all bug changes.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puremagic.com/pipermail/d.gnu/attachments/20141026/ed177da0/attachment.html>


More information about the D.gnu mailing list