@@ -208,12 +208,16 @@ pub fn add_mapping(
208208 let hdr = load :: < CommandHeader > ( instruction_data) ?;
209209 let mut cur_mapping = load_checked :: < MappingAccount > ( cur_mapping, hdr. version ) ?;
210210 pyth_assert (
211- cur_mapping. num_ == PC_MAP_TABLE_SIZE && pubkey_is_zero ( & cur_mapping. next_ ) ,
211+ cur_mapping. number_of_products == PC_MAP_TABLE_SIZE
212+ && pubkey_is_zero ( & cur_mapping. next_mapping_account ) ,
212213 ProgramError :: InvalidArgument ,
213214 ) ?;
214215
215216 initialize_pyth_account_checked :: < MappingAccount > ( next_mapping, hdr. version ) ?;
216- pubkey_assign ( & mut cur_mapping. next_ , & next_mapping. key . to_bytes ( ) ) ;
217+ pubkey_assign (
218+ & mut cur_mapping. next_mapping_account ,
219+ & next_mapping. key . to_bytes ( ) ,
220+ ) ;
217221
218222 Ok ( ( ) )
219223}
@@ -363,11 +367,20 @@ pub fn add_price(
363367
364368 let mut price_data =
365369 initialize_pyth_account_checked :: < PriceAccount > ( price_account, cmd_args. header . version ) ?;
366- price_data. expo_ = cmd_args. exponent ;
367- price_data. ptype_ = cmd_args. price_type ;
368- pubkey_assign ( & mut price_data. prod_ , & product_account. key . to_bytes ( ) ) ;
369- pubkey_assign ( & mut price_data. next_ , bytes_of ( & product_data. px_acc_ ) ) ;
370- pubkey_assign ( & mut product_data. px_acc_ , & price_account. key . to_bytes ( ) ) ;
370+ price_data. exponent = cmd_args. exponent ;
371+ price_data. price_type = cmd_args. price_type ;
372+ pubkey_assign (
373+ & mut price_data. product_account ,
374+ & product_account. key . to_bytes ( ) ,
375+ ) ;
376+ pubkey_assign (
377+ & mut price_data. next_price_account ,
378+ bytes_of ( & product_data. first_price_account ) ,
379+ ) ;
380+ pubkey_assign (
381+ & mut product_data. first_price_account ,
382+ & price_account. key . to_bytes ( ) ,
383+ ) ;
371384
372385 Ok ( ( ) )
373386}
@@ -398,16 +411,22 @@ pub fn del_price(
398411 let mut product_data = load_checked :: < ProductAccount > ( product_account, cmd_args. version ) ?;
399412 let price_data = load_checked :: < PriceAccount > ( price_account, cmd_args. version ) ?;
400413 pyth_assert (
401- pubkey_equal ( & product_data. px_acc_ , & price_account. key . to_bytes ( ) ) ,
414+ pubkey_equal (
415+ & product_data. first_price_account ,
416+ & price_account. key . to_bytes ( ) ,
417+ ) ,
402418 ProgramError :: InvalidArgument ,
403419 ) ?;
404420
405421 pyth_assert (
406- pubkey_equal ( & price_data. prod_ , & product_account. key . to_bytes ( ) ) ,
422+ pubkey_equal ( & price_data. product_account , & product_account. key . to_bytes ( ) ) ,
407423 ProgramError :: InvalidArgument ,
408424 ) ?;
409425
410- pubkey_assign ( & mut product_data. px_acc_ , bytes_of ( & price_data. next_ ) ) ;
426+ pubkey_assign (
427+ & mut product_data. first_price_account ,
428+ bytes_of ( & price_data. next_price_account ) ,
429+ ) ;
411430 }
412431
413432 // Zero out the balance of the price account to delete it.
@@ -439,11 +458,11 @@ pub fn init_price(
439458
440459 let mut price_data = load_checked :: < PriceAccount > ( price_account, cmd_args. header . version ) ?;
441460 pyth_assert (
442- price_data. ptype_ == cmd_args. price_type ,
461+ price_data. price_type == cmd_args. price_type ,
443462 ProgramError :: InvalidArgument ,
444463 ) ?;
445464
446- price_data. expo_ = cmd_args. exponent ;
465+ price_data. exponent = cmd_args. exponent ;
447466
448467 price_data. last_slot_ = 0 ;
449468 price_data. valid_slot_ = 0 ;
@@ -530,7 +549,7 @@ pub fn add_publisher(
530549 bytes_of ( & cmd_args. publisher ) ,
531550 ) ;
532551 price_data. num_ += 1 ;
533- price_data. size_ =
552+ price_data. header . size =
534553 try_convert :: < _ , u32 > ( size_of :: < PriceAccount > ( ) - size_of_val ( & price_data. comp_ ) ) ?
535554 + price_data. num_ * try_convert :: < _ , u32 > ( size_of :: < PriceComponent > ( ) ) ?;
536555 Ok ( ( ) )
@@ -574,7 +593,7 @@ pub fn del_publisher(
574593 0 ,
575594 size_of :: < PriceComponent > ( ) ,
576595 ) ;
577- price_data. size_ =
596+ price_data. header . size =
578597 try_convert :: < _ , u32 > ( size_of :: < PriceAccount > ( ) - size_of_val ( & price_data. comp_ ) ) ?
579598 + price_data. num_ * try_convert :: < _ , u32 > ( size_of :: < PriceComponent > ( ) ) ?;
580599 return Ok ( ( ) ) ;
@@ -606,21 +625,22 @@ pub fn add_product(
606625 let mut mapping_data = load_checked :: < MappingAccount > ( tail_mapping_account, hdr. version ) ?;
607626 // The mapping account must have free space to add the product account
608627 pyth_assert (
609- mapping_data. num_ < PC_MAP_TABLE_SIZE ,
628+ mapping_data. number_of_products < PC_MAP_TABLE_SIZE ,
610629 ProgramError :: InvalidArgument ,
611630 ) ?;
612631
613632 initialize_pyth_account_checked :: < ProductAccount > ( new_product_account, hdr. version ) ?;
614633
615- let current_index: usize = try_convert ( mapping_data. num_ ) ?;
634+ let current_index: usize = try_convert ( mapping_data. number_of_products ) ?;
616635 pubkey_assign (
617- & mut mapping_data. prod_ [ current_index] ,
636+ & mut mapping_data. products_list [ current_index] ,
618637 bytes_of ( & new_product_account. key . to_bytes ( ) ) ,
619638 ) ;
620- mapping_data. num_ += 1 ;
621- mapping_data. size_ =
622- try_convert :: < _ , u32 > ( size_of :: < MappingAccount > ( ) - size_of_val ( & mapping_data. prod_ ) ) ?
623- + mapping_data. num_ * try_convert :: < _ , u32 > ( size_of :: < CPubkey > ( ) ) ?;
639+ mapping_data. number_of_products += 1 ;
640+ mapping_data. header . size = try_convert :: < _ , u32 > (
641+ size_of :: < MappingAccount > ( ) - size_of_val ( & mapping_data. products_list ) ,
642+ ) ? + mapping_data. number_of_products
643+ * try_convert :: < _ , u32 > ( size_of :: < CPubkey > ( ) ) ?;
624644
625645 Ok ( ( ) )
626646}
@@ -680,7 +700,7 @@ pub fn upd_product(
680700 }
681701
682702 let mut product_data = load_checked :: < ProductAccount > ( product_account, hdr. version ) ?;
683- product_data. size_ = try_convert ( size_of :: < ProductAccount > ( ) + new_data. len ( ) ) ?;
703+ product_data. header . size = try_convert ( size_of :: < ProductAccount > ( ) + new_data. len ( ) ) ?;
684704
685705 Ok ( ( ) )
686706}
@@ -738,36 +758,40 @@ pub fn del_product(
738758 let product_data = load_checked :: < ProductAccount > ( product_account, cmd_args. version ) ?;
739759
740760 // This assertion is just to make the subtractions below simpler
741- pyth_assert ( mapping_data. num_ >= 1 , ProgramError :: InvalidArgument ) ?;
742761 pyth_assert (
743- pubkey_is_zero ( & product_data. px_acc_ ) ,
762+ mapping_data. number_of_products >= 1 ,
763+ ProgramError :: InvalidArgument ,
764+ ) ?;
765+ pyth_assert (
766+ pubkey_is_zero ( & product_data. first_price_account ) ,
744767 ProgramError :: InvalidArgument ,
745768 ) ?;
746769
747770 let product_key = product_account. key . to_bytes ( ) ;
748771 let product_index = mapping_data
749- . prod_
772+ . products_list
750773 . iter ( )
751774 . position ( |x| pubkey_equal ( x, & product_key) )
752775 . ok_or ( ProgramError :: InvalidArgument ) ?;
753776
754777 let num_after_removal: usize = try_convert (
755778 mapping_data
756- . num_
779+ . number_of_products
757780 . checked_sub ( 1 )
758781 . ok_or ( ProgramError :: InvalidArgument ) ?,
759782 ) ?;
760783
761- let last_key_bytes = mapping_data. prod_ [ num_after_removal] ;
784+ let last_key_bytes = mapping_data. products_list [ num_after_removal] ;
762785 pubkey_assign (
763- & mut mapping_data. prod_ [ product_index] ,
786+ & mut mapping_data. products_list [ product_index] ,
764787 bytes_of ( & last_key_bytes) ,
765788 ) ;
766- pubkey_clear ( & mut mapping_data. prod_ [ num_after_removal] ) ;
767- mapping_data. num_ = try_convert :: < _ , u32 > ( num_after_removal) ?;
768- mapping_data. size_ =
769- try_convert :: < _ , u32 > ( size_of :: < MappingAccount > ( ) - size_of_val ( & mapping_data. prod_ ) ) ?
770- + mapping_data. num_ * try_convert :: < _ , u32 > ( size_of :: < CPubkey > ( ) ) ?;
789+ pubkey_clear ( & mut mapping_data. products_list [ num_after_removal] ) ;
790+ mapping_data. number_of_products = try_convert :: < _ , u32 > ( num_after_removal) ?;
791+ mapping_data. header . size = try_convert :: < _ , u32 > (
792+ size_of :: < MappingAccount > ( ) - size_of_val ( & mapping_data. products_list ) ,
793+ ) ? + mapping_data. number_of_products
794+ * try_convert :: < _ , u32 > ( size_of :: < CPubkey > ( ) ) ?;
771795 }
772796
773797 // Zero out the balance of the price account to delete it.
0 commit comments