-
Notifications
You must be signed in to change notification settings - Fork 10.6k
Description
| Previous ID | SR-10478 |
| Radar | rdar://problem/49906841 |
| Original Reporter | fbeeper (JIRA User) |
| Type | Bug |
| Status | Resolved |
| Resolution | Done |
Environment
Running on Xcode Version 10.2 (10E125).
Failing on both a Swift 4.2 project and Swift 5.0 Playground.
Compiling with Optimization Level None [-Onone].
Additional Detail from JIRA
| Votes | 0 |
| Component/s | Compiler |
| Labels | Bug, RunTimeCrash |
| Assignee | None |
| Priority | Medium |
md5: 8669e5a47c8541304bb7e62da864518a
duplicates:
- SR-9207 Crash casting NSError to URLError in Swift 4.x
Issue Description:
I ran into an unexpected EXC_BAD_ACCESS on an error I catch in my code. The crash happens when accessing localizedDescription, but only when I try to compare the error with some other error type before that.
There are many ways to code a working alternative, but this crash certainly looked interesting to me. Hope this report is somehow useful.
I reproduced my issue in this nonsensical but enough-to-proof-the-crash sample code:
struct MyObject: Codable {
let id: Int
}
enum MyError: CustomNSError {
case tomato
}
do {
_ = try JSONDecoder().decode(MyObject.self, from: "akldnlknglfkng".data(using: .utf8)!)
}
catch let error as NSError {
if let myError = error as? MyError {
print("MyError: \(myError.localizedDescription)")
}
else {
print(error.localizedDescription)
}
}As I mention above, the crash happens in the execution of localizedDescription. But, if I remove the if-statement trying to match the catched error to MyError it will not crash anymore.
I defined MyError to be a CustomNSError because mine was, but making it an Error causes the same issue.
While somehow similar to the issue described on SR-7493, I am having this issue running the project on Xcode, Debug config.