Skip to content

Commit efdf0f3

Browse files
authored
(138167666) Prevent crash when bridging an invalid CFURL to Swift URL (#993)
1 parent f77911a commit efdf0f3

File tree

1 file changed

+6
-1
lines changed

1 file changed

+6
-1
lines changed

Sources/FoundationEssentials/URL/URL.swift

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1988,7 +1988,12 @@ public struct URL: Equatable, Sendable, Hashable {
19881988
return
19891989
}
19901990
#endif
1991-
_parseInfo = Parser.parse(urlString: _url.relativeString, encodingInvalidCharacters: true)!
1991+
if let parseInfo = Parser.parse(urlString: _url.relativeString, encodingInvalidCharacters: true) {
1992+
_parseInfo = parseInfo
1993+
} else {
1994+
// Go to compatibility jail (allow `URL` as a dummy string container for `NSURL` instead of crashing)
1995+
_parseInfo = URLParseInfo(urlString: _url.relativeString, urlParser: .RFC3986, schemeRange: nil, userRange: nil, passwordRange: nil, hostRange: nil, portRange: nil, pathRange: nil, queryRange: nil, fragmentRange: nil, isIPLiteral: false, didPercentEncodeHost: false, pathHasPercent: false)
1996+
}
19921997
_baseParseInfo = reference.baseURL?._parseInfo
19931998
}
19941999

0 commit comments

Comments
 (0)