Skip to content

Commit

Permalink
[SR-391] _CFSwiftDictionaryGetKeysAndValues() crashes with NULL argum…
Browse files Browse the repository at this point in the history
…ents

It's valid to enumerate a dictionary with CFDictionaryGetKeysAndValues(), only
retrieving the keys or values (or indeed nothing).
  • Loading branch information
lhoward committed Dec 29, 2015
1 parent 028cb2d commit 6724634
Showing 1 changed file with 6 additions and 2 deletions.
8 changes: 6 additions & 2 deletions Foundation/NSCFDictionary.swift
Expand Up @@ -139,8 +139,12 @@ internal func _CFSwiftDictionaryContainsValue(dictionary: AnyObject, value: AnyO
internal func _CFSwiftDictionaryGetKeysAndValues(dictionary: AnyObject, keybuf: UnsafeMutablePointer<Unmanaged<AnyObject>?>, valuebuf: UnsafeMutablePointer<Unmanaged<AnyObject>?>) {
var idx = 0
(dictionary as! NSDictionary).enumerateKeysAndObjectsUsingBlock { key, value, _ in
keybuf[idx] = Unmanaged<AnyObject>.passUnretained(key)
valuebuf[idx] = Unmanaged<AnyObject>.passUnretained(value)
if keybuf != nil {
keybuf[idx] = Unmanaged<AnyObject>.passUnretained(key)
}
if valuebuf != nil {
valuebuf[idx] = Unmanaged<AnyObject>.passUnretained(value)
}
idx += 1
}
}
Expand Down

0 comments on commit 6724634

Please sign in to comment.