[Issue 23440] closure over typesafe variadic or scope array passes safe though leads to stack corruption

d-bugmail at puremagic.com d-bugmail at puremagic.com
Tue Mar 28 14:51:12 UTC 2023


https://issues.dlang.org/show_bug.cgi?id=23440

Steven Schveighoffer <schveiguy at gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |accepts-invalid

--- Comment #2 from Steven Schveighoffer <schveiguy at gmail.com> ---
The closure should fail to allocate, since it has to point at scope data from
the heap.

It can be reduced to this case:

```d
@safe:
auto foo(scope int *x)
{
    return { return x; };
}

auto bar() {
    int x = 5;
    return foo(&x);
}

void smash() {
    ubyte[1024] data;
}
void main()
{
    import std.stdio;
    auto dg = bar();
    smash();
    writeln(*dg());
}
```

--


More information about the Digitalmars-d-bugs mailing list