@@ -1398,15 +1398,15 @@ impl Extension for AccountPaddingTest {
1398
1398
/// NOTE: Since this function deals with fixed-size extensions, it does not
1399
1399
/// handle _decreasing_ the size of an account's data buffer, like the function
1400
1400
/// `alloc_and_serialize_variable_len_extension` does.
1401
- pub fn alloc_and_serialize < S : BaseState + Pack , V : Default + Extension + Pod > (
1401
+ pub ( crate ) fn alloc_and_serialize < S : BaseState + Pod , V : Default + Extension + Pod > (
1402
1402
account_info : & AccountInfo ,
1403
1403
new_extension : & V ,
1404
1404
overwrite : bool ,
1405
1405
) -> Result < ( ) , ProgramError > {
1406
1406
let previous_account_len = account_info. try_data_len ( ) ?;
1407
1407
let new_account_len = {
1408
1408
let data = account_info. try_borrow_data ( ) ?;
1409
- let state = StateWithExtensions :: < S > :: unpack ( & data) ?;
1409
+ let state = PodStateWithExtensions :: < S > :: unpack ( & data) ?;
1410
1410
state. try_get_new_account_len :: < V > ( ) ?
1411
1411
} ;
1412
1412
@@ -1418,7 +1418,7 @@ pub fn alloc_and_serialize<S: BaseState + Pack, V: Default + Extension + Pod>(
1418
1418
if previous_account_len <= BASE_ACCOUNT_LENGTH {
1419
1419
set_account_type :: < S > ( * buffer) ?;
1420
1420
}
1421
- let mut state = StateWithExtensionsMut :: < S > :: unpack ( & mut buffer) ?;
1421
+ let mut state = PodStateWithExtensionsMut :: < S > :: unpack ( & mut buffer) ?;
1422
1422
1423
1423
// Write the extension
1424
1424
let extension = state. init_extension :: < V > ( overwrite) ?;
@@ -1435,8 +1435,8 @@ pub fn alloc_and_serialize<S: BaseState + Pack, V: Default + Extension + Pod>(
1435
1435
///
1436
1436
/// NOTE: Unlike the `reallocate` instruction, this function will reduce the
1437
1437
/// size of an account if it has too many bytes allocated for the given value.
1438
- pub fn alloc_and_serialize_variable_len_extension <
1439
- S : BaseState + Pack ,
1438
+ pub ( crate ) fn alloc_and_serialize_variable_len_extension <
1439
+ S : BaseState + Pod ,
1440
1440
V : Extension + VariableLenPack ,
1441
1441
> (
1442
1442
account_info : & AccountInfo ,
@@ -1446,7 +1446,7 @@ pub fn alloc_and_serialize_variable_len_extension<
1446
1446
let previous_account_len = account_info. try_data_len ( ) ?;
1447
1447
let ( new_account_len, extension_already_exists) = {
1448
1448
let data = account_info. try_borrow_data ( ) ?;
1449
- let state = StateWithExtensions :: < S > :: unpack ( & data) ?;
1449
+ let state = PodStateWithExtensions :: < S > :: unpack ( & data) ?;
1450
1450
let new_account_len =
1451
1451
state. try_get_new_account_len_for_variable_len_extension ( new_extension) ?;
1452
1452
let extension_already_exists = state. get_extension_bytes :: < V > ( ) . is_ok ( ) ;
@@ -1463,20 +1463,20 @@ pub fn alloc_and_serialize_variable_len_extension<
1463
1463
account_info. realloc ( new_account_len, false ) ?;
1464
1464
let mut buffer = account_info. try_borrow_mut_data ( ) ?;
1465
1465
if extension_already_exists {
1466
- let mut state = StateWithExtensionsMut :: < S > :: unpack ( & mut buffer) ?;
1466
+ let mut state = PodStateWithExtensionsMut :: < S > :: unpack ( & mut buffer) ?;
1467
1467
state. realloc_variable_len_extension ( new_extension) ?;
1468
1468
} else {
1469
1469
if previous_account_len <= BASE_ACCOUNT_LENGTH {
1470
1470
set_account_type :: < S > ( * buffer) ?;
1471
1471
}
1472
1472
// now alloc in the TLV buffer and write the data
1473
- let mut state = StateWithExtensionsMut :: < S > :: unpack ( & mut buffer) ?;
1473
+ let mut state = PodStateWithExtensionsMut :: < S > :: unpack ( & mut buffer) ?;
1474
1474
state. init_variable_len_extension ( new_extension, false ) ?;
1475
1475
}
1476
1476
} else {
1477
1477
// do it backwards otherwise, write the state, realloc TLV, then the account
1478
1478
let mut buffer = account_info. try_borrow_mut_data ( ) ?;
1479
- let mut state = StateWithExtensionsMut :: < S > :: unpack ( & mut buffer) ?;
1479
+ let mut state = PodStateWithExtensionsMut :: < S > :: unpack ( & mut buffer) ?;
1480
1480
if extension_already_exists {
1481
1481
state. realloc_variable_len_extension ( new_extension) ?;
1482
1482
} else {
@@ -2657,7 +2657,7 @@ mod test {
2657
2657
let key = Pubkey :: new_unique ( ) ;
2658
2658
let account_info = ( & key, & mut data) . into_account_info ( ) ;
2659
2659
2660
- alloc_and_serialize :: < Mint , _ > ( & account_info, & fixed_len, false ) . unwrap ( ) ;
2660
+ alloc_and_serialize :: < PodMint , _ > ( & account_info, & fixed_len, false ) . unwrap ( ) ;
2661
2661
let new_account_len = BASE_ACCOUNT_AND_TYPE_LENGTH + add_type_and_length_to_len ( value_len) ;
2662
2662
assert_eq ! ( data. len( ) , new_account_len) ;
2663
2663
let state = StateWithExtensions :: < Mint > :: unpack ( data. data ( ) ) . unwrap ( ) ;
@@ -2668,12 +2668,12 @@ mod test {
2668
2668
2669
2669
// alloc again succeeds with "overwrite"
2670
2670
let account_info = ( & key, & mut data) . into_account_info ( ) ;
2671
- alloc_and_serialize :: < Mint , _ > ( & account_info, & fixed_len, true ) . unwrap ( ) ;
2671
+ alloc_and_serialize :: < PodMint , _ > ( & account_info, & fixed_len, true ) . unwrap ( ) ;
2672
2672
2673
2673
// alloc again fails without "overwrite"
2674
2674
let account_info = ( & key, & mut data) . into_account_info ( ) ;
2675
2675
assert_eq ! (
2676
- alloc_and_serialize:: <Mint , _>( & account_info, & fixed_len, false ) . unwrap_err( ) ,
2676
+ alloc_and_serialize:: <PodMint , _>( & account_info, & fixed_len, false ) . unwrap_err( ) ,
2677
2677
TokenError :: ExtensionAlreadyInitialized . into( )
2678
2678
) ;
2679
2679
}
@@ -2692,8 +2692,12 @@ mod test {
2692
2692
let key = Pubkey :: new_unique ( ) ;
2693
2693
let account_info = ( & key, & mut data) . into_account_info ( ) ;
2694
2694
2695
- alloc_and_serialize_variable_len_extension :: < Mint , _ > ( & account_info, & variable_len, false )
2696
- . unwrap ( ) ;
2695
+ alloc_and_serialize_variable_len_extension :: < PodMint , _ > (
2696
+ & account_info,
2697
+ & variable_len,
2698
+ false ,
2699
+ )
2700
+ . unwrap ( ) ;
2697
2701
let new_account_len = BASE_ACCOUNT_AND_TYPE_LENGTH + add_type_and_length_to_len ( value_len) ;
2698
2702
assert_eq ! ( data. len( ) , new_account_len) ;
2699
2703
let state = StateWithExtensions :: < Mint > :: unpack ( data. data ( ) ) . unwrap ( ) ;
@@ -2706,13 +2710,17 @@ mod test {
2706
2710
2707
2711
// alloc again succeeds with "overwrite"
2708
2712
let account_info = ( & key, & mut data) . into_account_info ( ) ;
2709
- alloc_and_serialize_variable_len_extension :: < Mint , _ > ( & account_info, & variable_len, true )
2710
- . unwrap ( ) ;
2713
+ alloc_and_serialize_variable_len_extension :: < PodMint , _ > (
2714
+ & account_info,
2715
+ & variable_len,
2716
+ true ,
2717
+ )
2718
+ . unwrap ( ) ;
2711
2719
2712
2720
// alloc again fails without "overwrite"
2713
2721
let account_info = ( & key, & mut data) . into_account_info ( ) ;
2714
2722
assert_eq ! (
2715
- alloc_and_serialize_variable_len_extension:: <Mint , _>(
2723
+ alloc_and_serialize_variable_len_extension:: <PodMint , _>(
2716
2724
& account_info,
2717
2725
& variable_len,
2718
2726
false ,
@@ -2748,7 +2756,7 @@ mod test {
2748
2756
let key = Pubkey :: new_unique ( ) ;
2749
2757
let account_info = ( & key, & mut data) . into_account_info ( ) ;
2750
2758
2751
- alloc_and_serialize :: < Mint , _ > ( & account_info, & fixed_len, false ) . unwrap ( ) ;
2759
+ alloc_and_serialize :: < PodMint , _ > ( & account_info, & fixed_len, false ) . unwrap ( ) ;
2752
2760
let new_account_len = BASE_ACCOUNT_AND_TYPE_LENGTH
2753
2761
+ add_type_and_length_to_len ( value_len)
2754
2762
+ add_type_and_length_to_len ( size_of :: < GroupPointer > ( ) ) ;
@@ -2764,12 +2772,12 @@ mod test {
2764
2772
2765
2773
// alloc again succeeds with "overwrite"
2766
2774
let account_info = ( & key, & mut data) . into_account_info ( ) ;
2767
- alloc_and_serialize :: < Mint , _ > ( & account_info, & fixed_len, true ) . unwrap ( ) ;
2775
+ alloc_and_serialize :: < PodMint , _ > ( & account_info, & fixed_len, true ) . unwrap ( ) ;
2768
2776
2769
2777
// alloc again fails without "overwrite"
2770
2778
let account_info = ( & key, & mut data) . into_account_info ( ) ;
2771
2779
assert_eq ! (
2772
- alloc_and_serialize:: <Mint , _>( & account_info, & fixed_len, false ) . unwrap_err( ) ,
2780
+ alloc_and_serialize:: <PodMint , _>( & account_info, & fixed_len, false ) . unwrap_err( ) ,
2773
2781
TokenError :: ExtensionAlreadyInitialized . into( )
2774
2782
) ;
2775
2783
}
@@ -2798,8 +2806,12 @@ mod test {
2798
2806
let key = Pubkey :: new_unique ( ) ;
2799
2807
let account_info = ( & key, & mut data) . into_account_info ( ) ;
2800
2808
2801
- alloc_and_serialize_variable_len_extension :: < Mint , _ > ( & account_info, & variable_len, false )
2802
- . unwrap ( ) ;
2809
+ alloc_and_serialize_variable_len_extension :: < PodMint , _ > (
2810
+ & account_info,
2811
+ & variable_len,
2812
+ false ,
2813
+ )
2814
+ . unwrap ( ) ;
2803
2815
let new_account_len = BASE_ACCOUNT_AND_TYPE_LENGTH
2804
2816
+ add_type_and_length_to_len ( value_len)
2805
2817
+ add_type_and_length_to_len ( size_of :: < MetadataPointer > ( ) ) ;
@@ -2817,13 +2829,17 @@ mod test {
2817
2829
2818
2830
// alloc again succeeds with "overwrite"
2819
2831
let account_info = ( & key, & mut data) . into_account_info ( ) ;
2820
- alloc_and_serialize_variable_len_extension :: < Mint , _ > ( & account_info, & variable_len, true )
2821
- . unwrap ( ) ;
2832
+ alloc_and_serialize_variable_len_extension :: < PodMint , _ > (
2833
+ & account_info,
2834
+ & variable_len,
2835
+ true ,
2836
+ )
2837
+ . unwrap ( ) ;
2822
2838
2823
2839
// alloc again fails without "overwrite"
2824
2840
let account_info = ( & key, & mut data) . into_account_info ( ) ;
2825
2841
assert_eq ! (
2826
- alloc_and_serialize_variable_len_extension:: <Mint , _>(
2842
+ alloc_and_serialize_variable_len_extension:: <PodMint , _>(
2827
2843
& account_info,
2828
2844
& variable_len,
2829
2845
false ,
@@ -2864,8 +2880,12 @@ mod test {
2864
2880
let key = Pubkey :: new_unique ( ) ;
2865
2881
let account_info = ( & key, & mut data) . into_account_info ( ) ;
2866
2882
let variable_len = VariableLenMintTest { data : vec ! [ 1 , 2 ] } ;
2867
- alloc_and_serialize_variable_len_extension :: < Mint , _ > ( & account_info, & variable_len, true )
2868
- . unwrap ( ) ;
2883
+ alloc_and_serialize_variable_len_extension :: < PodMint , _ > (
2884
+ & account_info,
2885
+ & variable_len,
2886
+ true ,
2887
+ )
2888
+ . unwrap ( ) ;
2869
2889
2870
2890
let state = StateWithExtensions :: < Mint > :: unpack ( data. data ( ) ) . unwrap ( ) ;
2871
2891
let extension = state. get_extension :: < MetadataPointer > ( ) . unwrap ( ) ;
@@ -2882,8 +2902,12 @@ mod test {
2882
2902
let variable_len = VariableLenMintTest {
2883
2903
data : vec ! [ 1 , 2 , 3 , 4 , 5 , 6 , 7 ] ,
2884
2904
} ;
2885
- alloc_and_serialize_variable_len_extension :: < Mint , _ > ( & account_info, & variable_len, true )
2886
- . unwrap ( ) ;
2905
+ alloc_and_serialize_variable_len_extension :: < PodMint , _ > (
2906
+ & account_info,
2907
+ & variable_len,
2908
+ true ,
2909
+ )
2910
+ . unwrap ( ) ;
2887
2911
2888
2912
let state = StateWithExtensions :: < Mint > :: unpack ( data. data ( ) ) . unwrap ( ) ;
2889
2913
let extension = state. get_extension :: < MetadataPointer > ( ) . unwrap ( ) ;
@@ -2900,8 +2924,12 @@ mod test {
2900
2924
let variable_len = VariableLenMintTest {
2901
2925
data : vec ! [ 7 , 6 , 5 , 4 , 3 , 2 , 1 ] ,
2902
2926
} ;
2903
- alloc_and_serialize_variable_len_extension :: < Mint , _ > ( & account_info, & variable_len, true )
2904
- . unwrap ( ) ;
2927
+ alloc_and_serialize_variable_len_extension :: < PodMint , _ > (
2928
+ & account_info,
2929
+ & variable_len,
2930
+ true ,
2931
+ )
2932
+ . unwrap ( ) ;
2905
2933
2906
2934
let state = StateWithExtensions :: < Mint > :: unpack ( data. data ( ) ) . unwrap ( ) ;
2907
2935
let extension = state. get_extension :: < MetadataPointer > ( ) . unwrap ( ) ;
0 commit comments