[Issue 9421] (Compiler internals) Change OutBuffer's interface

d-bugmail at puremagic.com d-bugmail at puremagic.com
Tue Feb 12 20:30:12 PST 2013


http://d.puremagic.com/issues/show_bug.cgi?id=9421



--- Comment #6 from Andrej Mitrovic <andrej.mitrovich at gmail.com> 2013-02-12 20:30:07 PST ---
(In reply to comment #5)
> The idea being that getting a pointer to the internal string shouldn't change
> the contents.

Ok, but then what do we need scopedData for? If we're returning a char* and
it's not zero-terminated I don't see how it can be used.

So far I've got this:

/** Extract a zero-terminated string.
    The caller takes ownership. */
const char *OutBuffer::extractString()
{
    if (!data || data[offset] != '\0')
        writeByte(0);
    char *p;
    p = (char *)data;
    data = NULL;
    offset = 0;
    size = 0;
    return p;
}

/** Verify the internal buffer is zero-terminated
    and return a reference to it. */
const char *OutBuffer::scopedString()
{
    assert(data && data[offset] == '\0');
    return (char *)data;
}

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------


More information about the Digitalmars-d-bugs mailing list