@@ -18,6 +18,7 @@ import (
18
18
19
19
"github.com/golang/protobuf/internal/wire"
20
20
"google.golang.org/protobuf/reflect/protoreflect"
21
+ "google.golang.org/protobuf/runtime/protoimpl"
21
22
)
22
23
23
24
// a sizer takes a pointer to a field and the size of its tag, computes the size of
@@ -2373,14 +2374,14 @@ func (u *marshalInfo) sizeExtensions(ext *XXX_InternalExtensions) int {
2373
2374
2374
2375
n := 0
2375
2376
m .Range (func (_ protoreflect.FieldNumber , e Extension ) bool {
2376
- if e . Desc == nil || ! e .HasValue () {
2377
+ if ! e . HasType () || ! e .HasValue () {
2377
2378
return true // should never happen
2378
2379
}
2379
2380
2380
2381
// We don't skip extensions that have an encoded form set,
2381
2382
// because the extension value may have been mutated after
2382
2383
// the last time this function was called.
2383
- ei := u .getExtElemInfo (e . Desc )
2384
+ ei := u .getExtElemInfo (protoimpl . X . ExtensionDescFromType ( e . GetType ()) )
2384
2385
v := e .GetValue ()
2385
2386
p := toAddrPointer (& v , ei .isptr , ei .deref )
2386
2387
n += ei .sizer (p , ei .tagsize )
@@ -2403,15 +2404,15 @@ func (u *marshalInfo) appendExtensions(b []byte, ext *XXX_InternalExtensions, de
2403
2404
// Don't bother sorting the keys.
2404
2405
if m .Len () <= 1 {
2405
2406
m .Range (func (_ protoreflect.FieldNumber , e Extension ) bool {
2406
- if e . Desc == nil || ! e .HasValue () {
2407
+ if ! e . HasType () || ! e .HasValue () {
2407
2408
return true // should never happen
2408
2409
}
2409
2410
2410
2411
// We don't skip extensions that have an encoded form set,
2411
2412
// because the extension value may have been mutated after
2412
2413
// the last time this function was called.
2413
2414
2414
- ei := u .getExtElemInfo (e . Desc )
2415
+ ei := u .getExtElemInfo (protoimpl . X . ExtensionDescFromType ( e . GetType ()) )
2415
2416
v := e .GetValue ()
2416
2417
p := toAddrPointer (& v , ei .isptr , ei .deref )
2417
2418
b , err = ei .marshaler (b , p , ei .wiretag , deterministic )
@@ -2435,15 +2436,15 @@ func (u *marshalInfo) appendExtensions(b []byte, ext *XXX_InternalExtensions, de
2435
2436
2436
2437
for _ , k := range keys {
2437
2438
e := m .Get (protoreflect .FieldNumber (k ))
2438
- if e . Desc == nil || ! e .HasValue () {
2439
+ if ! e . HasType () || ! e .HasValue () {
2439
2440
continue // should never happen
2440
2441
}
2441
2442
2442
2443
// We don't skip extensions that have an encoded form set,
2443
2444
// because the extension value may have been mutated after
2444
2445
// the last time this function was called.
2445
2446
2446
- ei := u .getExtElemInfo (e . Desc )
2447
+ ei := u .getExtElemInfo (protoimpl . X . ExtensionDescFromType ( e . GetType ()) )
2447
2448
v := e .GetValue ()
2448
2449
p := toAddrPointer (& v , ei .isptr , ei .deref )
2449
2450
b , err = ei .marshaler (b , p , ei .wiretag , deterministic )
@@ -2475,15 +2476,15 @@ func (u *marshalInfo) sizeMessageSet(ext *XXX_InternalExtensions, unk []byte) in
2475
2476
n += 2 // start group, end group. tag = 1 (size=1)
2476
2477
n += SizeVarint (uint64 (id )) + 1 // type_id, tag = 2 (size=1)
2477
2478
2478
- if e . Desc == nil || ! e .HasValue () {
2479
+ if ! e . HasType () || ! e .HasValue () {
2479
2480
return true // should never happen
2480
2481
}
2481
2482
2482
2483
// We don't skip extensions that have an encoded form set,
2483
2484
// because the extension value may have been mutated after
2484
2485
// the last time this function was called.
2485
2486
2486
- ei := u .getExtElemInfo (e . Desc )
2487
+ ei := u .getExtElemInfo (protoimpl . X . ExtensionDescFromType ( e . GetType ()) )
2487
2488
v := e .GetValue ()
2488
2489
p := toAddrPointer (& v , ei .isptr , ei .deref )
2489
2490
n += ei .sizer (p , 1 ) // message, tag = 3 (size=1)
@@ -2528,15 +2529,15 @@ func (u *marshalInfo) appendMessageSet(b []byte, ext *XXX_InternalExtensions, un
2528
2529
b = append (b , 2 << 3 | WireVarint )
2529
2530
b = appendVarint (b , uint64 (id ))
2530
2531
2531
- if e . Desc == nil || ! e .HasValue () {
2532
+ if ! e . HasType () || ! e .HasValue () {
2532
2533
return true // should never happen
2533
2534
}
2534
2535
2535
2536
// We don't skip extensions that have an encoded form set,
2536
2537
// because the extension value may have been mutated after
2537
2538
// the last time this function was called.
2538
2539
2539
- ei := u .getExtElemInfo (e . Desc )
2540
+ ei := u .getExtElemInfo (protoimpl . X . ExtensionDescFromType ( e . GetType ()) )
2540
2541
v := e .GetValue ()
2541
2542
p := toAddrPointer (& v , ei .isptr , ei .deref )
2542
2543
b , err = ei .marshaler (b , p , 3 << 3 | WireBytes , deterministic )
@@ -2583,15 +2584,15 @@ func (u *marshalInfo) appendMessageSet(b []byte, ext *XXX_InternalExtensions, un
2583
2584
b = append (b , 2 << 3 | WireVarint )
2584
2585
b = appendVarint (b , uint64 (id ))
2585
2586
2586
- if e . Desc == nil || ! e .HasValue () {
2587
+ if ! e . HasType () || ! e .HasValue () {
2587
2588
continue // should never happen
2588
2589
}
2589
2590
2590
2591
// We don't skip extensions that have an encoded form set,
2591
2592
// because the extension value may have been mutated after
2592
2593
// the last time this function was called.
2593
2594
2594
- ei := u .getExtElemInfo (e . Desc )
2595
+ ei := u .getExtElemInfo (protoimpl . X . ExtensionDescFromType ( e . GetType ()) )
2595
2596
v := e .GetValue ()
2596
2597
p := toAddrPointer (& v , ei .isptr , ei .deref )
2597
2598
b , err = ei .marshaler (b , p , 3 << 3 | WireBytes , deterministic )
@@ -2630,15 +2631,15 @@ func (u *marshalInfo) sizeV1Extensions(m map[int32]Extension) int {
2630
2631
2631
2632
n := 0
2632
2633
for _ , e := range m {
2633
- if e . Desc == nil || ! e .HasValue () {
2634
+ if ! e . HasType () || ! e .HasValue () {
2634
2635
continue // should never happen
2635
2636
}
2636
2637
2637
2638
// We don't skip extensions that have an encoded form set,
2638
2639
// because the extension value may have been mutated after
2639
2640
// the last time this function was called.
2640
2641
2641
- ei := u .getExtElemInfo (e . Desc )
2642
+ ei := u .getExtElemInfo (protoimpl . X . ExtensionDescFromType ( e . GetType ()) )
2642
2643
v := e .GetValue ()
2643
2644
p := toAddrPointer (& v , ei .isptr , ei .deref )
2644
2645
n += ei .sizer (p , ei .tagsize )
@@ -2663,15 +2664,15 @@ func (u *marshalInfo) appendV1Extensions(b []byte, m map[int32]Extension, determ
2663
2664
var nerr nonFatal
2664
2665
for _ , k := range keys {
2665
2666
e := m [int32 (k )]
2666
- if e . Desc == nil || ! e .HasValue () {
2667
+ if ! e . HasType () || ! e .HasValue () {
2667
2668
continue // should never happen
2668
2669
}
2669
2670
2670
2671
// We don't skip extensions that have an encoded form set,
2671
2672
// because the extension value may have been mutated after
2672
2673
// the last time this function was called.
2673
2674
2674
- ei := u .getExtElemInfo (e . Desc )
2675
+ ei := u .getExtElemInfo (protoimpl . X . ExtensionDescFromType ( e . GetType ()) )
2675
2676
v := e .GetValue ()
2676
2677
p := toAddrPointer (& v , ei .isptr , ei .deref )
2677
2678
b , err = ei .marshaler (b , p , ei .wiretag , deterministic )
0 commit comments