December 12, 2018 std.uni.ReallocPolicy question | ||||
---|---|---|---|---|
| ||||
Anybody knows why `std/uni.ReallocPolicy`'s `realloc` and `destroy` are `@trusted`? Those were introduced by this PR: https://github.com/dlang/phobos/pull/6041/files `realloc` and `destroy` are never `@safe` solely from their point of view, as they don't know if there are any references to the memory they are freeing. The caller has this information and he can safely make the call to them `@trusted`. Cheers, Edi |
December 13, 2018 Re: std.uni.ReallocPolicy question | ||||
---|---|---|---|---|
| ||||
Posted in reply to Eduard Staniloiu | On 12/12/18 4:42 AM, Eduard Staniloiu wrote:
> Anybody knows why `std/uni.ReallocPolicy`'s `realloc` and `destroy` are `@trusted`?
> Those were introduced by this PR: https://github.com/dlang/phobos/pull/6041/files
>
> `realloc` and `destroy` are never `@safe` solely from their point of view, as they don't know if there are any references to the memory they are freeing. The caller has this information and he can safely make the call to them `@trusted`.
From the stand point of that PR, nothing changed except the ability to build with dip1000 I think. Instead of the struct being tagged @safe, and the functions inside tagged @trusted, the whole thing was tagged @trusted.
And I 100% agree, that shouldn't have been @safe or @trusted ever.
The correct way to do this would be to hoist the @trusted tag out to the usage of those structs. But I don't know enough about the code to make an informed recommendation.
-Steve
|
Copyright © 1999-2021 by the D Language Foundation