Skip to content

Commit 720139a

Browse files
spevansianpartridge
authored andcommitted
NSURL: Dont leak the result of dataRepresentation (swiftlang#1170)
1 parent a585dfc commit 720139a

File tree

2 files changed

+9
-1
lines changed

2 files changed

+9
-1
lines changed

Foundation/NSURL.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -405,7 +405,7 @@ open class NSURL : NSObject, NSSecureCoding, NSCopying {
405405
let buffer = malloc(bytesNeeded)!.bindMemory(to: UInt8.self, capacity: bytesNeeded)
406406
let bytesFilled = CFURLGetBytes(_cfObject, buffer, bytesNeeded)
407407
if bytesFilled == bytesNeeded {
408-
return Data(bytesNoCopy: buffer, count: bytesNeeded, deallocator: .none)
408+
return Data(bytesNoCopy: buffer, count: bytesNeeded, deallocator: .free)
409409
} else {
410410
fatalError()
411411
}

TestFoundation/TestURL.swift

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ class TestURL : XCTestCase {
6464
("test_reachable", test_reachable),
6565
("test_copy", test_copy),
6666
("test_itemNSCoding", test_itemNSCoding),
67+
("test_dataRepresentation", test_dataRepresentation),
6768
]
6869
}
6970

@@ -491,6 +492,13 @@ class TestURL : XCTestCase {
491492
let queryItemB = NSKeyedUnarchiver.unarchiveObject(with: NSKeyedArchiver.archivedData(withRootObject: queryItemA)) as! NSURLQueryItem
492493
XCTAssertEqual(queryItemA, queryItemB, "Archived then unarchived query item must be equal.")
493494
}
495+
496+
func test_dataRepresentation() {
497+
let url = NSURL(fileURLWithPath: "/tmp/foo")
498+
let url2 = NSURL(dataRepresentation: url.dataRepresentation,
499+
relativeTo: nil)
500+
XCTAssertEqual(url, url2)
501+
}
494502
}
495503

496504
class TestURLComponents : XCTestCase {

0 commit comments

Comments
 (0)