Re: Segfault with std.variant
Great! Thank you!
Re: Segfault with std.variant
On Saturday, 25 March 2023 at 07:42:28 UTC, Ali Çehreli wrote: This looks like a bug to me. Such a problem does not occur when you set all objects with the new operator. ```d void main() { import std.variant; auto var = Variant([ "one": new Variant(1), "two": new Variant(2), "three": new Variant(3), "four": new Variant(4), "five": new Variant(5) ]); auto six = new Variant(6); var["six"] = new Variant(6); assert(var.length == 6); } ``` SDB@79
Re: Segfault with std.variant
On 3/24/23 23:07, Mitchell wrote: >variant["four"] = Variant(4); // Segfault Today I learned that VariantN forwards to associative array operations. Cool I guess. :) > with a segfault. I'm using LDC2: Same with dmd. It fails in the destructor of VariantN. static if (!AllowedTypes.length || anySatisfy!(hasElaborateDestructor, AllowedTypes)) { ~this() { // Infer the safety of the provided types static if (AllowedTypes.length) { if (0) { AllowedTypes var; } } (() @trusted => fptr(OpID.destruct, , null))(); } } That @trusted lambda call segfaults. This looks like a bug to me. Reported: https://issues.dlang.org/show_bug.cgi?id=23809 Ali