aboutsummaryrefslogtreecommitdiff
path: root/objectivec/GPBDictionary.m
diff options
context:
space:
mode:
authorThomas Van Lenten <thomasvl@google.com>2017-01-04 15:03:42 -0500
committerThomas Van Lenten <thomasvl@google.com>2017-01-05 09:15:40 -0500
commit988ffe0a78ebda0410e61ce31a3bd689c774f59e (patch)
treef5e92cdc634e4eef2ef2b891de95ad23bec3fba4 /objectivec/GPBDictionary.m
parent4cb113a91b180559f0eedbca0244ef1181a7204c (diff)
downloadprotobuf-988ffe0a78ebda0410e61ce31a3bd689c774f59e.tar.gz
protobuf-988ffe0a78ebda0410e61ce31a3bd689c774f59e.tar.bz2
protobuf-988ffe0a78ebda0410e61ce31a3bd689c774f59e.zip
Minor fix for autocreated object repeated fields and maps.
- If setting/clearing a repeated field/map that was objects, check the class before checking the autocreator. - Just to be paranoid, don’t mutate within copy/mutableCopy for the autocreated classes to ensure there is less chance of issues if someone does something really crazy threading wise. - Some more tests for the internal AutocreatedArray/AutocreatedDictionary classes to ensure things are working as expected. - Add Xcode 8.2 to the full_mac_build.sh supported list.
Diffstat (limited to 'objectivec/GPBDictionary.m')
-rw-r--r--objectivec/GPBDictionary.m8
1 files changed, 6 insertions, 2 deletions
diff --git a/objectivec/GPBDictionary.m b/objectivec/GPBDictionary.m
index fd8bd1ce..1c67c680 100644
--- a/objectivec/GPBDictionary.m
+++ b/objectivec/GPBDictionary.m
@@ -13579,22 +13579,26 @@ void GPBDictionaryReadEntry(id mapDictionary,
- (id)copyWithZone:(NSZone *)zone {
if (_dictionary == nil) {
- _dictionary = [[NSMutableDictionary alloc] init];
+ return [[NSMutableDictionary allocWithZone:zone] init];
}
return [_dictionary copyWithZone:zone];
}
- (id)mutableCopyWithZone:(NSZone *)zone {
if (_dictionary == nil) {
- _dictionary = [[NSMutableDictionary alloc] init];
+ return [[NSMutableDictionary allocWithZone:zone] init];
}
return [_dictionary mutableCopyWithZone:zone];
}
+// Not really needed, but subscripting is likely common enough it doesn't hurt
+// to ensure it goes directly to the real NSMutableDictionary.
- (id)objectForKeyedSubscript:(id)key {
return [_dictionary objectForKeyedSubscript:key];
}
+// Not really needed, but subscripting is likely common enough it doesn't hurt
+// to ensure it goes directly to the real NSMutableDictionary.
- (void)setObject:(id)obj forKeyedSubscript:(id<NSCopying>)key {
if (_dictionary == nil) {
_dictionary = [[NSMutableDictionary alloc] init];