Skip to content

Commit 783c177

Browse files
committed
[Refactoring] Fix stack use after free in new async refactorings
Resolves rdar://73984220
1 parent e2bac38 commit 783c177

File tree

7 files changed

+4
-14
lines changed

7 files changed

+4
-14
lines changed

lib/IDE/Refactoring.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5249,7 +5249,8 @@ bool RefactoringActionConvertCallToAsyncAlternative::performChange() {
52495249
assert(CE &&
52505250
"Should not run performChange when refactoring is not applicable");
52515251

5252-
AsyncConversionStringBuilder Builder(SM, DiagEngine, AsyncHandlerDesc());
5252+
AsyncHandlerDesc TempDesc;
5253+
AsyncConversionStringBuilder Builder(SM, DiagEngine, TempDesc);
52535254
Builder.convertNode(CE);
52545255

52555256
if (DiagEngine.hadAnyError())
@@ -5281,7 +5282,8 @@ bool RefactoringActionConvertToAsync::performChange() {
52815282
assert(FD &&
52825283
"Should not run performChange when refactoring is not applicable");
52835284

5284-
AsyncConversionStringBuilder Builder(SM, DiagEngine, AsyncHandlerDesc());
5285+
AsyncHandlerDesc TempDesc;
5286+
AsyncConversionStringBuilder Builder(SM, DiagEngine, TempDesc);
52855287
Builder.convertFunction(FD);
52865288

52875289
if (DiagEngine.hadAnyError())

test/refactoring/ConvertAsync/basic.swift

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
// rdar://problem/73984220
2-
// XFAIL: asan
31
enum CustomError: Error {
42
case invalid
53
case insecure

test/refactoring/ConvertAsync/convert_function.swift

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
// rdar://problem/73984220
2-
// XFAIL: asan
31
enum CustomError : Error {
42
case Bad
53
}

test/refactoring/ConvertAsync/convert_params_multi.swift

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
// rdar://problem/73984220
2-
// XFAIL: asan
31
func manyWithError(_ completion: (String?, Int?, Error?) -> Void) { }
42

53
// RUN: %refactor -convert-call-to-async-alternative -dump-text -source-filename %s -pos=%(line+1):3 | %FileCheck -check-prefix=MANYBOUND %s

test/refactoring/ConvertAsync/convert_params_single.swift

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
// rdar://problem/73984220
2-
// XFAIL: asan
31
func withError(_ completion: (String?, Error?) -> Void) { }
42
func test(_ str: String) -> Bool { return false }
53

test/refactoring/ConvertAsync/convert_result.swift

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
// rdar://problem/73984220
2-
// XFAIL: asan
31
func simple(_ completion: (Result<String, Error>) -> Void) { }
42
func noError(_ completion: (Result<String, Never>) -> Void) { }
53
func test(_ str: String) -> Bool { return false }

test/refactoring/ConvertAsync/errors.swift

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
// rdar://problem/73984220
2-
// XFAIL: asan
31
func simple(completion: (String?, Error?) -> Void) { }
42

53
func mismatches() {

0 commit comments

Comments
 (0)