Segfault with std.variant

Mitchell mitchelldlarson at protonmail.ch
Sat Mar 25 06:07:43 UTC 2023


Howdy,

I've just tried out `std.variant` and I've noticed that I can 
induce a segfault by having a variant of variants. Should this 
work?

```d
import std.stdio;
import std.variant;

void main()
{
   Variant variant = Variant([
     "one": Variant(1),
     "two": Variant(2),
     "three": Variant(3)
   ]);

   writefln("Segfault occurs on the next line");
   variant["four"] = Variant(4); // Segfault
   writefln("This line will not be reached");
}
```

For whatever reason, the `variant["four"] = Variant(4)` line will 
fail with a segfault. I'm using LDC2:
```
LDC - the LLVM D compiler (1.31.0):
   based on DMD v2.101.2 and LLVM 14.0.3
   built with LDC - the LLVM D compiler (1.31.0)
   Default target: x86_64-unknown-linux-gnu
   Host CPU: ivybridge
```


More information about the Digitalmars-d-learn mailing list