Skip to content

Commit

Permalink
Fix nonskipped action list order
Browse files Browse the repository at this point in the history
  • Loading branch information
EmelyanenkoK authored Jun 25, 2024
1 parent 94c9fec commit af958e4
Showing 1 changed file with 6 additions and 1 deletion.
7 changes: 6 additions & 1 deletion crypto/block/transaction.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1853,6 +1853,7 @@ bool Transaction::prepare_action_phase(const ActionPhaseConfig& cfg) {
int mode = (int)cs.fetch_ulong(8);
if (mode & 2) {
ap.skipped_actions++;
non_skipped_action_list.push_back({});
continue;
} else if ((mode & 16) && cfg.bounce_on_fail_enabled) {
ap.bounce = true;
Expand All @@ -1869,10 +1870,14 @@ bool Transaction::prepare_action_phase(const ActionPhaseConfig& cfg) {
non_skipped_action_list.push_back(ap.action_list[i]);
}
}
std::reverse(non_skipped_action_list.begin(), non_skipped_action_list.end());
ap.action_list = std::move(non_skipped_action_list);
n -= ap.skipped_actions;
ap.valid = true;
for (int i = n - 1; i >= 0; --i) {
if(ap.action_list[i].is_null()) {
continue;
}
ap.result_arg = n - 1 - i;
vm::CellSlice cs = load_cell_slice(ap.action_list[i]);
CHECK(cs.fetch_ref().not_null());
Expand Down Expand Up @@ -1910,7 +1915,7 @@ bool Transaction::prepare_action_phase(const ActionPhaseConfig& cfg) {
ap.no_funds = true;
}
LOG(DEBUG) << "invalid action " << ap.result_arg << " in action list: error code " << ap.result_code;
// This is reuqired here because changes to libraries are applied even if actipn phase fails
// This is required here because changes to libraries are applied even if actipn phase fails
enforce_state_limits();
if (cfg.action_fine_enabled) {
ap.action_fine = std::min(ap.action_fine, balance.grams);
Expand Down

0 comments on commit af958e4

Please sign in to comment.