Skip to content

Conversation

CAD97
Copy link
Contributor

@CAD97 CAD97 commented May 15, 2022

This parenthetical is problematic, because it suggests that the following is sound:

let layout = Layout::new::<[u8; 32]>();
let p1 = alloc(layout);
let p2 = realloc(p1, layout, 32);
if p1 == p2 {
    p1.write([0; 32]);
    dealloc(p1, layout);
} else {
    dealloc(p2, layout);
}

At the very least, this isn't the case for ANSI realloc

The original pointer ptr is invalidated and any access to it is undefined behavior (even if reallocation was in-place).

and Windows HeapReAlloc is unclear at best (HEAP_REALLOC_IN_PLACE_ONLY's description may imply that the old pointer may be used if HEAP_REALLOC_IN_PLACE_ONLY is provided).

The conservative position is to just remove the parenthetical.

cc @rust-lang/wg-unsafe-code-guidelines @rust-lang/wg-allocators

@rust-highfive
Copy link
Contributor

Hey! It looks like you've submitted a new PR for the library teams!

If this PR contains changes to any rust-lang/rust public library APIs then please comment with r? rust-lang/libs-api @rustbot label +T-libs-api -T-libs to request review from a libs-api team reviewer. If you're unsure where your change falls no worries, just leave it as is and the reviewer will take a look and make a decision to forward on if necessary.

Examples of T-libs-api changes:

  • Stabilizing library features
  • Introducing insta-stable changes such as new implementations of existing stable traits on existing stable types
  • Introducing new or changing existing unstable library APIs (excluding permanently unstable features / features without a tracking issue)
  • Changing public documentation in ways that create new stability guarantees
  • Changing observable runtime behavior of library APIs

@rustbot rustbot added the T-libs Relevant to the library team, which will review and decide on the PR/issue. label May 15, 2022
@rust-highfive
Copy link
Contributor

r? @joshtriplett

(rust-highfive has picked a reviewer for you, use r? to override)

@rust-highfive rust-highfive added the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label May 15, 2022
@CAD97
Copy link
Contributor Author

CAD97 commented May 15, 2022

r? rust-lang/libs-api @rustbot label +T-libs-api -T-libs

@rustbot rustbot added T-libs-api Relevant to the library API team, which will review and decide on the PR/issue. and removed T-libs Relevant to the library team, which will review and decide on the PR/issue. labels May 15, 2022
@dtolnay
Copy link
Member

dtolnay commented May 15, 2022

@bors r+ rollup

@bors
Copy link
Collaborator

bors commented May 15, 2022

📌 Commit 09dc24b has been approved by dtolnay

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels May 15, 2022
@bors
Copy link
Collaborator

bors commented May 16, 2022

⌛ Testing commit 09dc24b with merge 56d540e...

@bors
Copy link
Collaborator

bors commented May 16, 2022

☀️ Test successful - checks-actions
Approved by: dtolnay
Pushing 56d540e to master...

@bors bors added the merged-by-bors This PR was explicitly merged by bors. label May 16, 2022
@bors bors merged commit 56d540e into rust-lang:master May 16, 2022
@rustbot rustbot added this to the 1.63.0 milestone May 16, 2022
@CAD97 CAD97 deleted the realloc-clarification branch May 16, 2022 05:03
@rust-timer
Copy link
Collaborator

Finished benchmarking commit (56d540e): comparison url.

Summary: This benchmark run did not return any relevant results.

If you disagree with this performance assessment, please file an issue in rust-lang/rustc-perf.

@rustbot label: -perf-regression

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
merged-by-bors This PR was explicitly merged by bors. S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-libs-api Relevant to the library API team, which will review and decide on the PR/issue.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants