From 84e9cbd030358c22e5d986b24edca4beadecbc77 Mon Sep 17 00:00:00 2001 From: Christian Kamm Date: Thu, 26 May 2022 20:38:03 +0200 Subject: [PATCH] Make health iteration code work with pyth oracles They have a different account owner, that error must be skipped. --- programs/mango-v4/src/instructions/margin_trade.rs | 3 ++- programs/mango-v4/src/state/health.rs | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/programs/mango-v4/src/instructions/margin_trade.rs b/programs/mango-v4/src/instructions/margin_trade.rs index f57045ae8..0992ea2dc 100644 --- a/programs/mango-v4/src/instructions/margin_trade.rs +++ b/programs/mango-v4/src/instructions/margin_trade.rs @@ -90,7 +90,8 @@ pub fn margin_trade<'key, 'accounts, 'remaining, 'info>( allowed_banks.insert(ai.key, bank); } Err(Error::AnchorError(error)) - if error.error_code_number == ErrorCode::AccountDiscriminatorMismatch as u32 => + if error.error_code_number == ErrorCode::AccountDiscriminatorMismatch as u32 + || error.error_code_number == ErrorCode::AccountOwnedByWrongProgram as u32 => { break; } diff --git a/programs/mango-v4/src/state/health.rs b/programs/mango-v4/src/state/health.rs index 6e9c2b557..10625b02a 100644 --- a/programs/mango-v4/src/state/health.rs +++ b/programs/mango-v4/src/state/health.rs @@ -114,7 +114,9 @@ impl<'a, 'b> ScanningAccountRetriever<'a, 'b> { } Err(Error::AnchorError(error)) if error.error_code_number - == ErrorCode::AccountDiscriminatorMismatch as u32 => + == ErrorCode::AccountDiscriminatorMismatch as u32 + || error.error_code_number + == ErrorCode::AccountOwnedByWrongProgram as u32 => { break; }