Break out of the correct number of scopes in loops by matthewjasper · Pull Request #62388 · rust-lang/rust (original) (raw)

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 andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Conversation4 Commits1 Checks0 Files changed

Conversation

This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.Learn more about bidirectional Unicode characters

[ Show hidden characters]({{ revealButtonHref }})

matthewjasper

We were incorrectly breaking out of one too many drop scopes when
generating MIR for loops and breakable blocks, resulting in use after
free and associated borrow checker warnings.

This wasn't noticed because the scope that we're breaking out of twice
is only used for temporaries that are created for adjustments applied to
the loop. Since loops generally propagate coercions to the break
expressions, the only case we see this is when the type of the loop is a
smart pointer to a trait object.

Closes #62312

@matthewjasper

We were incorrectly breaking out of one too many drop scopes when generating MIR for loops and breakable blocks, resulting in use after free and associated borrow checker warnings.

This wasn't noticed because the scope that we're breaking out of twice is only used for temporaries that are created for adjustments applied to the loop. Since loops generally propagate coercions to the break expressions, the only case we see this is when the type of the loop is a smart pointer to a trait object.

@rust-highfive

r? @petrochenkov

(rust_highfive has picked a reviewer for you, use r? to override)

@petrochenkov

I know very little about MIR.
r? @rust-lang/compiler

eddyb

@eddyb

@bors

📌 Commit 1b7ffe5 has been approved by eddyb

@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

Jul 5, 2019

Centril added a commit to Centril/rust that referenced this pull request

Jul 5, 2019

@Centril

…tion, r=eddyb

Break out of the correct number of scopes in loops

We were incorrectly breaking out of one too many drop scopes when generating MIR for loops and breakable blocks, resulting in use after free and associated borrow checker warnings.

This wasn't noticed because the scope that we're breaking out of twice is only used for temporaries that are created for adjustments applied to the loop. Since loops generally propagate coercions to the break expressions, the only case we see this is when the type of the loop is a smart pointer to a trait object.

Closes rust-lang#62312

bors added a commit that referenced this pull request

Jul 5, 2019

@bors

Rollup of 10 pull requests

Successful merges:

Failed merges:

r? @ghost

Labels

S-waiting-on-bors

Status: Waiting on bors to run and complete tests. Bors will change the label on completion.