diff --git a/CoreFoundation/String.subproj/CFRegularExpression.c b/CoreFoundation/String.subproj/CFRegularExpression.c index 71a121df45..79a1d96b4d 100644 --- a/CoreFoundation/String.subproj/CFRegularExpression.c +++ b/CoreFoundation/String.subproj/CFRegularExpression.c @@ -133,8 +133,9 @@ _CFRegularExpressionRef _CFRegularExpressionCreate(CFAllocatorRef allocator, CFS if (regex == NULL || U_FAILURE(errorCode)) { // ??? do we need more detailed errors here? if (errorPtr) { - CFStringRef keys[] = { - CFSTR("NSInvalidValue") + CFStringRef key = CFSTR("NSInvalidValue"); + CFTypeRef keys[] = { + key }; CFTypeRef values[] = { pattern diff --git a/Foundation/NSRegularExpression.swift b/Foundation/NSRegularExpression.swift index f0f30dbe2e..8eea556b83 100644 --- a/Foundation/NSRegularExpression.swift +++ b/Foundation/NSRegularExpression.swift @@ -85,7 +85,7 @@ open class NSRegularExpression: NSObject, NSCopying, NSCoding { if let regex = _CFRegularExpressionCreate(kCFAllocatorSystemDefault, pattern._cfObject, opt, &error) { _internal = regex } else { - throw error!.takeRetainedValue()._nsObject + throw error!.takeRetainedValue() } } diff --git a/TestFoundation/TestNSRegularExpression.swift b/TestFoundation/TestNSRegularExpression.swift index 215c58a8a9..aa7dfe1f34 100644 --- a/TestFoundation/TestNSRegularExpression.swift +++ b/TestFoundation/TestNSRegularExpression.swift @@ -29,6 +29,7 @@ class TestNSRegularExpression : XCTestCase { ("test_Equal", test_Equal), ("test_NSCoding", test_NSCoding), ("test_defaultOptions", test_defaultOptions), + ("test_badPattern", test_badPattern), ] } @@ -372,4 +373,14 @@ class TestNSRegularExpression : XCTestCase { let str = NSMutableString(string: text) XCTAssertEqual(regex!.replaceMatches(in: str, range: range, withTemplate: "$1-$2-$3"), 1) } + + func test_badPattern() { + do { + _ = try NSRegularExpression(pattern: "(", options: []) + XCTFail() + } catch { + let err = String(describing: error) + XCTAssertEqual(err, "Error Domain=NSCocoaErrorDomain Code=2048 \"(null)\" UserInfo={NSInvalidValue=(}") + } + } }