Thread overview | ||||||||
---|---|---|---|---|---|---|---|---|
|
June 08, 2022 [Issue 21443] scope (failure) with a return breaks safety | ||||
---|---|---|---|---|
| ||||
https://issues.dlang.org/show_bug.cgi?id=21443 Steven Schveighoffer <schveiguy@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |safe, spec CC| |schveiguy@gmail.com Severity|major |critical --- Comment #1 from Steven Schveighoffer <schveiguy@gmail.com> --- I concur. Recently came up on the forums in response to a blog post I made: https://forum.dlang.org/post/tylpiqohdfqsiiqupfta@forum.dlang.org Since an Error does not necessarily properly unwind the stack, just returning a normal error code doesn't reflect the gravity of the situation -- you should not be allowed to swallow Errors and continue. My suggestion would be to rewrite the scope(failure) code as: ```d try { ... } catch(Error err) { // return 10; // not allowed abort("Cannot return from thrown Error"); } catch(Throwable) { return 10; } ``` Which would allow code to still compile, but not allow Undefined Behavior. I would suggest this still happen even inside @system code. If you want to circumvent, write out the try/catch yourself. I'd also be OK with Andrej's suggestion (no return inside scope(failure), or anything like it, such as a goto outside the block). I should note, the spec specifically allows this, as it forbids returns inside scope(exit) and scope(success), but purposefully leaves out scope(failure). -- |
June 20, 2022 [Issue 21443] scope (failure) with a return breaks safety | ||||
---|---|---|---|---|
| ||||
https://issues.dlang.org/show_bug.cgi?id=21443 Susan <su+dlangissues@angel-island.zone> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |su+dlangissues@angel-island | |.zone -- |
July 05, 2022 [Issue 21443] scope (failure) with a return breaks safety | ||||
---|---|---|---|---|
| ||||
https://issues.dlang.org/show_bug.cgi?id=21443 Dlang Bot <dlang-bot@dlang.rocks> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |pull --- Comment #2 from Dlang Bot <dlang-bot@dlang.rocks> --- @RazvanN7 created dlang/dmd pull request #14269 "Fix Issue 21443 - scope (failure) with a return breaks safety" fixing this issue: - Fix Issue 21443 - scope (failure) with a return breaks safety https://github.com/dlang/dmd/pull/14269 -- |
July 07, 2022 [Issue 21443] scope (failure) with a return breaks safety | ||||
---|---|---|---|---|
| ||||
https://issues.dlang.org/show_bug.cgi?id=21443 Dlang Bot <dlang-bot@dlang.rocks> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution|--- |FIXED --- Comment #3 from Dlang Bot <dlang-bot@dlang.rocks> --- dlang/dmd pull request #14269 "Fix Issue 21443 - scope (failure) with a return breaks safety" was merged into stable: - 8ea4610d83d9c4b7aebc2ea52514885c02ef193d by RazvanN7: Fix Issue 21443 - scope (failure) with a return breaks safety https://github.com/dlang/dmd/pull/14269 -- |
July 09, 2022 [Issue 21443] scope (failure) with a return breaks safety | ||||
---|---|---|---|---|
| ||||
https://issues.dlang.org/show_bug.cgi?id=21443 --- Comment #4 from Dlang Bot <dlang-bot@dlang.rocks> --- dlang/dmd pull request #14280 "merge stable" was merged into master: - 2c336dfa825c481f0a32f495ce26232e45d820a4 by RazvanN7: Fix Issue 21443 - scope (failure) with a return breaks safety https://github.com/dlang/dmd/pull/14280 -- |
March 27 [Issue 21443] scope (failure) with a return breaks safety | ||||
---|---|---|---|---|
| ||||
https://issues.dlang.org/show_bug.cgi?id=21443 elpenguino+D@gmail.com changed: What |Removed |Added ---------------------------------------------------------------------------- See Also| |https://issues.dlang.org/sh | |ow_bug.cgi?id=24460 -- |
Copyright © 1999-2021 by the D Language Foundation