Using onOutOfMemoryError in C wrappers
Per Nordlöw
per.nordlow at gmail.com
Wed Mar 24 08:51:34 UTC 2021
On Wednesday, 24 March 2021 at 08:31:19 UTC, Basile B. wrote:
> There are several ways to do that. In addition to
> onOutOfMemoryError, you can use a static instance
>
> void v() @nogc nothrow
> {
> __gshared oom = new OutOfMemoryError();
> auto X* = X_create();
> if (X is null)
> throw oom;
> }
How is that better than
void v() @nogc nothrow
{
auto X* = X_create();
if (X is null)
onOutOfMemoryError();
}
considering the fact that accessing `__gshared` state is neither
`@safe` nor `pure`? Which, in turn, makes `v()` unconditionally
unsafe and unpure regardless of safety and purity of `X_create()`.
More information about the Digitalmars-d-learn
mailing list