Skip to content

Commit 22f4476

Browse files
authored
Fix copy-on-write behavior for merged messages. (apple#327)
* Fix copy-on-write behavior for merged messages. * Update docs for decodeField to warn about CoW semantics.
1 parent b06f914 commit 22f4476

File tree

72 files changed

+285
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

72 files changed

+285
-0
lines changed

Reference/google/protobuf/any_test.pb.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ struct ProtobufUnittest_TestAny: SwiftProtobuf.Proto3Message, SwiftProtobuf._Mes
107107
init() {}
108108

109109
mutating func _protobuf_generated_decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
110+
_ = _uniqueStorage()
110111
try withExtendedLifetime(_storage) { (_storage: _StorageClass) in
111112
while let fieldNumber = try decoder.nextFieldNumber() {
112113
try decodeField(decoder: &decoder, fieldNumber: fieldNumber)

Reference/google/protobuf/api.pb.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,7 @@ struct Google_Protobuf_Api: SwiftProtobuf.Proto3Message, SwiftProtobuf._MessageI
167167
init() {}
168168

169169
mutating func _protobuf_generated_decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
170+
_ = _uniqueStorage()
170171
try withExtendedLifetime(_storage) { (_storage: _StorageClass) in
171172
while let fieldNumber = try decoder.nextFieldNumber() {
172173
try decodeField(decoder: &decoder, fieldNumber: fieldNumber)

Reference/google/protobuf/compiler/plugin.pb.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,7 @@ struct Google_Protobuf_Compiler_CodeGeneratorRequest: SwiftProtobuf.Proto2Messag
270270
}
271271

272272
mutating func _protobuf_generated_decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
273+
_ = _uniqueStorage()
273274
try withExtendedLifetime(_storage) { (_storage: _StorageClass) in
274275
while let fieldNumber = try decoder.nextFieldNumber() {
275276
try decodeField(decoder: &decoder, fieldNumber: fieldNumber)

Reference/google/protobuf/descriptor.pb.swift

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -285,6 +285,7 @@ struct Google_Protobuf_FileDescriptorProto: SwiftProtobuf.Proto2Message, SwiftPr
285285
}
286286

287287
mutating func _protobuf_generated_decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
288+
_ = _uniqueStorage()
288289
try withExtendedLifetime(_storage) { (_storage: _StorageClass) in
289290
while let fieldNumber = try decoder.nextFieldNumber() {
290291
try decodeField(decoder: &decoder, fieldNumber: fieldNumber)
@@ -652,6 +653,7 @@ struct Google_Protobuf_DescriptorProto: SwiftProtobuf.Proto2Message, SwiftProtob
652653
}
653654

654655
mutating func _protobuf_generated_decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
656+
_ = _uniqueStorage()
655657
try withExtendedLifetime(_storage) { (_storage: _StorageClass) in
656658
while let fieldNumber = try decoder.nextFieldNumber() {
657659
try decodeField(decoder: &decoder, fieldNumber: fieldNumber)
@@ -1083,6 +1085,7 @@ struct Google_Protobuf_FieldDescriptorProto: SwiftProtobuf.Proto2Message, SwiftP
10831085
}
10841086

10851087
mutating func _protobuf_generated_decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
1088+
_ = _uniqueStorage()
10861089
try withExtendedLifetime(_storage) { (_storage: _StorageClass) in
10871090
while let fieldNumber = try decoder.nextFieldNumber() {
10881091
try decodeField(decoder: &decoder, fieldNumber: fieldNumber)
@@ -1228,6 +1231,7 @@ struct Google_Protobuf_OneofDescriptorProto: SwiftProtobuf.Proto2Message, SwiftP
12281231
}
12291232

12301233
mutating func _protobuf_generated_decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
1234+
_ = _uniqueStorage()
12311235
try withExtendedLifetime(_storage) { (_storage: _StorageClass) in
12321236
while let fieldNumber = try decoder.nextFieldNumber() {
12331237
try decodeField(decoder: &decoder, fieldNumber: fieldNumber)
@@ -1342,6 +1346,7 @@ struct Google_Protobuf_EnumDescriptorProto: SwiftProtobuf.Proto2Message, SwiftPr
13421346
}
13431347

13441348
mutating func _protobuf_generated_decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
1349+
_ = _uniqueStorage()
13451350
try withExtendedLifetime(_storage) { (_storage: _StorageClass) in
13461351
while let fieldNumber = try decoder.nextFieldNumber() {
13471352
try decodeField(decoder: &decoder, fieldNumber: fieldNumber)
@@ -1466,6 +1471,7 @@ struct Google_Protobuf_EnumValueDescriptorProto: SwiftProtobuf.Proto2Message, Sw
14661471
}
14671472

14681473
mutating func _protobuf_generated_decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
1474+
_ = _uniqueStorage()
14691475
try withExtendedLifetime(_storage) { (_storage: _StorageClass) in
14701476
while let fieldNumber = try decoder.nextFieldNumber() {
14711477
try decodeField(decoder: &decoder, fieldNumber: fieldNumber)
@@ -1585,6 +1591,7 @@ struct Google_Protobuf_ServiceDescriptorProto: SwiftProtobuf.Proto2Message, Swif
15851591
}
15861592

15871593
mutating func _protobuf_generated_decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
1594+
_ = _uniqueStorage()
15881595
try withExtendedLifetime(_storage) { (_storage: _StorageClass) in
15891596
while let fieldNumber = try decoder.nextFieldNumber() {
15901597
try decodeField(decoder: &decoder, fieldNumber: fieldNumber)
@@ -1755,6 +1762,7 @@ struct Google_Protobuf_MethodDescriptorProto: SwiftProtobuf.Proto2Message, Swift
17551762
}
17561763

17571764
mutating func _protobuf_generated_decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
1765+
_ = _uniqueStorage()
17581766
try withExtendedLifetime(_storage) { (_storage: _StorageClass) in
17591767
while let fieldNumber = try decoder.nextFieldNumber() {
17601768
try decodeField(decoder: &decoder, fieldNumber: fieldNumber)

Reference/google/protobuf/map_lite_unittest.pb.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -332,6 +332,7 @@ struct ProtobufUnittest_TestMapLite: SwiftProtobuf.Proto2Message, SwiftProtobuf.
332332
init() {}
333333

334334
mutating func _protobuf_generated_decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
335+
_ = _uniqueStorage()
335336
try withExtendedLifetime(_storage) { (_storage: _StorageClass) in
336337
while let fieldNumber = try decoder.nextFieldNumber() {
337338
try decodeField(decoder: &decoder, fieldNumber: fieldNumber)
@@ -625,6 +626,7 @@ struct ProtobufUnittest_TestArenaMapLite: SwiftProtobuf.Proto2Message, SwiftProt
625626
init() {}
626627

627628
mutating func _protobuf_generated_decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
629+
_ = _uniqueStorage()
628630
try withExtendedLifetime(_storage) { (_storage: _StorageClass) in
629631
while let fieldNumber = try decoder.nextFieldNumber() {
630632
try decodeField(decoder: &decoder, fieldNumber: fieldNumber)

Reference/google/protobuf/map_unittest.pb.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -259,6 +259,7 @@ struct ProtobufUnittest_TestMap: SwiftProtobuf.Proto3Message, SwiftProtobuf._Mes
259259
init() {}
260260

261261
mutating func _protobuf_generated_decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
262+
_ = _uniqueStorage()
262263
try withExtendedLifetime(_storage) { (_storage: _StorageClass) in
263264
while let fieldNumber = try decoder.nextFieldNumber() {
264265
try decodeField(decoder: &decoder, fieldNumber: fieldNumber)
@@ -418,6 +419,7 @@ struct ProtobufUnittest_TestMapSubmessage: SwiftProtobuf.Proto3Message, SwiftPro
418419
init() {}
419420

420421
mutating func _protobuf_generated_decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
422+
_ = _uniqueStorage()
421423
try withExtendedLifetime(_storage) { (_storage: _StorageClass) in
422424
while let fieldNumber = try decoder.nextFieldNumber() {
423425
try decodeField(decoder: &decoder, fieldNumber: fieldNumber)
@@ -745,6 +747,7 @@ struct ProtobufUnittest_TestArenaMap: SwiftProtobuf.Proto3Message, SwiftProtobuf
745747
init() {}
746748

747749
mutating func _protobuf_generated_decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
750+
_ = _uniqueStorage()
748751
try withExtendedLifetime(_storage) { (_storage: _StorageClass) in
749752
while let fieldNumber = try decoder.nextFieldNumber() {
750753
try decodeField(decoder: &decoder, fieldNumber: fieldNumber)

Reference/google/protobuf/map_unittest_proto3.pb.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -258,6 +258,7 @@ struct Proto3TestMap: SwiftProtobuf.Proto3Message, SwiftProtobuf._MessageImpleme
258258
init() {}
259259

260260
mutating func _protobuf_generated_decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
261+
_ = _uniqueStorage()
261262
try withExtendedLifetime(_storage) { (_storage: _StorageClass) in
262263
while let fieldNumber = try decoder.nextFieldNumber() {
263264
try decodeField(decoder: &decoder, fieldNumber: fieldNumber)
@@ -412,6 +413,7 @@ struct Proto3TestMapSubmessage: SwiftProtobuf.Proto3Message, SwiftProtobuf._Mess
412413
init() {}
413414

414415
mutating func _protobuf_generated_decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
416+
_ = _uniqueStorage()
415417
try withExtendedLifetime(_storage) { (_storage: _StorageClass) in
416418
while let fieldNumber = try decoder.nextFieldNumber() {
417419
try decodeField(decoder: &decoder, fieldNumber: fieldNumber)

Reference/google/protobuf/struct.pb.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -347,6 +347,7 @@ struct Google_Protobuf_Value: SwiftProtobuf.Proto3Message, SwiftProtobuf._Messag
347347
init() {}
348348

349349
mutating func _protobuf_generated_decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
350+
_ = _uniqueStorage()
350351
try withExtendedLifetime(_storage) { (_storage: _StorageClass) in
351352
while let fieldNumber = try decoder.nextFieldNumber() {
352353
try decodeField(decoder: &decoder, fieldNumber: fieldNumber)

Reference/google/protobuf/test_messages_proto3.pb.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1460,6 +1460,7 @@ struct ProtobufTestMessages_Proto3_TestAllTypes: SwiftProtobuf.Proto3Message, Sw
14601460
init() {}
14611461

14621462
mutating func _protobuf_generated_decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
1463+
_ = _uniqueStorage()
14631464
try withExtendedLifetime(_storage) { (_storage: _StorageClass) in
14641465
while let fieldNumber = try decoder.nextFieldNumber() {
14651466
try decodeField(decoder: &decoder, fieldNumber: fieldNumber)
@@ -1500,6 +1501,7 @@ struct ProtobufTestMessages_Proto3_TestAllTypes: SwiftProtobuf.Proto3Message, Sw
15001501
init() {}
15011502

15021503
mutating func _protobuf_generated_decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
1504+
_ = _uniqueStorage()
15031505
try withExtendedLifetime(_storage) { (_storage: _StorageClass) in
15041506
while let fieldNumber = try decoder.nextFieldNumber() {
15051507
try decodeField(decoder: &decoder, fieldNumber: fieldNumber)

Reference/google/protobuf/type.pb.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,7 @@ struct Google_Protobuf_Type: SwiftProtobuf.Proto3Message, SwiftProtobuf._Message
175175
init() {}
176176

177177
mutating func _protobuf_generated_decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
178+
_ = _uniqueStorage()
178179
try withExtendedLifetime(_storage) { (_storage: _StorageClass) in
179180
while let fieldNumber = try decoder.nextFieldNumber() {
180181
try decodeField(decoder: &decoder, fieldNumber: fieldNumber)
@@ -623,6 +624,7 @@ struct Google_Protobuf_Enum: SwiftProtobuf.Proto3Message, SwiftProtobuf._Message
623624
init() {}
624625

625626
mutating func _protobuf_generated_decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
627+
_ = _uniqueStorage()
626628
try withExtendedLifetime(_storage) { (_storage: _StorageClass) in
627629
while let fieldNumber = try decoder.nextFieldNumber() {
628630
try decodeField(decoder: &decoder, fieldNumber: fieldNumber)
@@ -791,6 +793,7 @@ struct Google_Protobuf_Option: SwiftProtobuf.Proto3Message, SwiftProtobuf._Messa
791793
init() {}
792794

793795
mutating func _protobuf_generated_decodeMessage<D: SwiftProtobuf.Decoder>(decoder: inout D) throws {
796+
_ = _uniqueStorage()
794797
try withExtendedLifetime(_storage) { (_storage: _StorageClass) in
795798
while let fieldNumber = try decoder.nextFieldNumber() {
796799
try decodeField(decoder: &decoder, fieldNumber: fieldNumber)

0 commit comments

Comments
 (0)