Skip to content

Commit 79ac432

Browse files
authored
Merge pull request #1867 from YOCKOW/sr-9758
2 parents d2d72f8 + 8314cee commit 79ac432

File tree

2 files changed

+19
-8
lines changed

2 files changed

+19
-8
lines changed

Foundation/XMLParser.swift

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -465,16 +465,14 @@ open class XMLParser : NSObject {
465465
}
466466

467467
internal func _handleParseResult(_ parseResult: Int32) -> Bool {
468-
return true
469-
/*
470-
var result = true
471-
if parseResult != 0 {
472-
if parseResult != -1 {
473-
// TODO: determine if this result is a fatal error from libxml via the CF implementations
468+
if parseResult == 0 {
469+
return true
470+
} else {
471+
if _parserError == nil {
472+
_parserError = NSError(domain: XMLParser.errorDomain, code: Int(parseResult))
474473
}
475474
}
476-
return result
477-
*/
475+
return false
478476
}
479477

480478
internal func parseData(_ data: Data) -> Bool {

TestFoundation/TestXMLParser.swift

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ class TestXMLParser : XCTestCase {
6565
("test_withData", test_withData),
6666
("test_withDataEncodings", test_withDataEncodings),
6767
("test_withDataOptions", test_withDataOptions),
68+
("test_sr9758_abortParsing", test_sr9758_abortParsing),
6869
]
6970
}
7071

@@ -141,4 +142,16 @@ class TestXMLParser : XCTestCase {
141142
XCTAssertTrue(res)
142143
}
143144

145+
func test_sr9758_abortParsing() {
146+
class Delegate: NSObject, XMLParserDelegate {
147+
func parserDidStartDocument(_ parser: XMLParser) { parser.abortParsing() }
148+
}
149+
let xml = TestXMLParser.xmlUnderTest(encoding: .utf8)
150+
let parser = XMLParser(data: xml.data(using: .utf8)!)
151+
let delegate = Delegate()
152+
parser.delegate = delegate
153+
XCTAssertFalse(parser.parse())
154+
XCTAssertNotNil(parser.parserError)
155+
}
156+
144157
}

0 commit comments

Comments
 (0)