diff --git a/src/flamenco/runtime/sysvar/fd_sysvar_epoch_schedule.c b/src/flamenco/runtime/sysvar/fd_sysvar_epoch_schedule.c index 5b7336650aa..446897aeb54 100644 --- a/src/flamenco/runtime/sysvar/fd_sysvar_epoch_schedule.c +++ b/src/flamenco/runtime/sysvar/fd_sysvar_epoch_schedule.c @@ -37,19 +37,18 @@ fd_sysvar_epoch_schedule_write( fd_bank_t * bank, fd_funk_txn_xid_t const * xid, fd_capture_ctx_t * capture_ctx, fd_epoch_schedule_t const * epoch_schedule ) { - ulong sz = fd_epoch_schedule_size( epoch_schedule ); - /* TODO remove alloca */ - uchar enc[ sz ]; - memset( enc, 0, sz ); + + uchar enc[ FD_SYSVAR_EPOCH_SCHEDULE_BINCODE_SZ ] = {0}; + fd_bincode_encode_ctx_t ctx = { .data = enc, - .dataend = enc + sz + .dataend = enc + FD_SYSVAR_EPOCH_SCHEDULE_BINCODE_SZ }; - if( fd_epoch_schedule_encode( epoch_schedule, &ctx ) ) { - FD_LOG_ERR(("fd_epoch_schedule_encode failed")); + if( FD_UNLIKELY( fd_epoch_schedule_encode( epoch_schedule, &ctx ) ) ) { + FD_LOG_ERR(( "fd_epoch_schedule_encode failed" )); } - fd_sysvar_account_update( bank, accdb, xid, capture_ctx, &fd_sysvar_epoch_schedule_id, enc, sz ); + fd_sysvar_account_update( bank, accdb, xid, capture_ctx, &fd_sysvar_epoch_schedule_id, enc, FD_SYSVAR_EPOCH_SCHEDULE_BINCODE_SZ ); } fd_epoch_schedule_t *