-
Notifications
You must be signed in to change notification settings - Fork 505
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
clarify that references size_of_val can never exceed isize::MAX #1186
Conversation
I'm a bit unclear about the interaction of ZST and dangling (I'm likely misunderstanding this). Per the std docs:
This seems to provide an exception to the dangling rule. That is, something like this? // This points to some arbitrary location that was not allocated.
let x: *mut () = 1024 as *mut ();
unsafe {
// This should not be undefined behavior?
let y = *x;
} If so, would it make sense to add a similar sentence here? Otherwise, this seems to be in contradiction to the std docs, since this description of "dangling" doesn't carve out this exception. |
Well, it clarifies what the definition of "dangling" is when the size is 0. The reference has so far been more vague on this subject, but yeah I can make that more clear here as well. We probably want an entire subsection on the question of "dangling pointers" then, since it is all rather subtle. However, this interacts closely with a bunch of questions around pointer provenance, which we are not (yet) willing to give final answers to... |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks! Given the discussion in rust-lang/rust#95295 (comment) and the std docs and other places, I'm going to go ahead and merge.
Update books ## nomicon 1 commits in 70db9e4189f64d1d8e2451b1046111fb356b6dc2..8d1e4dccf71114ff56f328f671f2026d8e6b62a2 2022-06-27 20:47:21 +0900 to 2022-07-18 18:12:35 -0400 - Should be `align_of` instead of `size_of` ## reference 11 commits in 9fce337a55ee4a4629205f6094656195cecad231..a92be0fef439b3d8e0468d82cb24812d303520a0 2022-06-22 13:59:28 -0700 to 2022-07-21 19:01:23 -0700 - Add `IntoFuture::into_future` desugaring (rust-lang/reference#1233) - Remove uses of the phrase "in Rust" (rust-lang/reference#1241) - Revert "Add stable references of `macro_metavar_expr`" (rust-lang/reference#1242) - tweaks - further tweak addr_of exposition - edits - Apply suggestions from code review - document raw-addr-of operators - update union field type rules (rust-lang/reference#1238) - clarify that references size_of_val can never exceed isize::MAX (rust-lang/reference#1186) - Describe what `windows_subsystem` does (rust-lang/reference#1232) ## book 9 commits in cf2653a5ca553cbbb4a17f1a7db1947820f6a775..36383b4da21dbd0a0781473bc8ad7ef0ed1b6751 2022-07-05 12:07:58 -0400 to 2022-07-19 21:03:20 -0400 - Update ch16-02-message-passing.md - Update snapshots with edits made to src that need to be checked - Remove inconsistent newline. Fixes rust-lang/book#3240. - add missing `b` in chapter 15.6 - Grammar: corrected 'as much' to 'as such' - grammar: add missing 'of' - Fix incorrect link for listing 13-06 - Correct method name - Remove unused theme directories. ## rust-by-example 2 commits in 83724ca387a2a1cd3e8d848f62820020760e358b..3155db49b0d57cd82c65456ac210b69ecec5ccb1 2022-07-05 10:38:07 -0300 to 2022-07-05 20:35:53 -0300 - fix-type (rust-lang/rust-by-example#1565) - add-examples-to-destructure-tuples (rust-lang/rust-by-example#1566) ## rustc-dev-guide 27 commits in eb83839..d5201cd 2022-07-03 15:17:39 +0900 to 2022-07-21 04:48:49 +0200 - Debuginfo tests now also support revisions. - Link to rendered book directly - Fix link to clippy sync docs - remove stray markup - renamed - sync with hackmd version - replace misleading name (rust-lang/rustc-dev-guide#1401) - Remove a mention to Steve on r? example - obey line length limit (part 3) - obey line length limit (part 2) - obey line length limit - sync with hackmd - add draft chapter - add mdbook-mermaid - use relative links - fix some typos (rust-lang/rustc-dev-guide#1398) - typo: monomorph docs - Rename debugging_opts to unstable_opts, use link - address review comment - update date reference on MIR inliner - remove outdated info on debugging - small fixes to ty chapter (rust-lang/rustc-dev-guide#1390) - Update the build instructions for the standard library - overview.md: Link to existing Macro Expansion and Name Resolution docs (rust-lang/rustc-dev-guide#1388) - Git-ignore `pulls.json` (rust-lang/rustc-dev-guide#1386) - Revert "Add the config needed to get rust-analyzer working on src/bootstrap (rust-lang/rustc-dev-guide#1381)" - Use `x.py check` instead of `cargo check` for build scripts (rust-lang/rustc-dev-guide#1384)
This is the underlying UB that rust-lang/rust#95252 and rust-lang/rust#95295 fix.
I also removed the statement
since it contradicts what the library docs say about zero-sized accesses/types.