Implicit static->dynamic arr and modifying

Nick Sabalausky via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Wed May 7 08:41:09 PDT 2014


On 5/6/2014 6:46 PM, Rene Zwanenburg wrote:
> On Tuesday, 6 May 2014 at 02:17:06 UTC, Nick Sabalausky wrote:
>> So all is well, and deliberately so. Pardon the noise.
>
> IMO it's not. I once had a particularly nasty bug because of this:
>
> struct S
> {
>      @safe:
>      string str;
>
>      this(string data)
>      {
>          import std.digest.md;
>          str = md5Of(data).toHexString(); // Oops...
>      }
> }

That must be a terribly subtle one, I'm not seeing the problem at all.

I get that md5Of returns a static array, and then a slice of it gets 
passed to toHexString, but AIUI toHexString finishes (and returns a 
newly allocated string) before the temporary static array leaves scope.



More information about the Digitalmars-d-learn mailing list