On Wed, Jan 13, 2016 at 10:23:17PM +0530, Shriramana Sharma via
Digitalmars-d-learn wrote:
> Referring to:
> https://auto-tester.puremagic.com/show-run.ghtml?projectid=1=1915054=true,
> the lines in question are
> phobos/std/utf.d (66, 67):
>
> UnsignedStringBuf buf = void;
> msg ~= " (at index " ~ unsignedToTempString(index, buf, 10) ~ ")";
>
> rgrepping through the druntime and phobos sources for this symbol
> UnsignedStringBuf I found:
>
> ./druntime/src/core/internal/string.d:16:alias UnsignedStringBuf = char[20];
>
> So if it's a static array, then it has nothing to do with the GC, and
> appending will not use the GC, right? So why is the compiler
> complaining that I cannot use ~ inside a @nogc function?
[...]
Even though unsignedToTempString() uses a static array, `msg` is a
string, so appending to it using ~ or ~= may cause reallocation. That
violates @nogc.
T
--
Computers shouldn't beep through the keyhole.