From 596ac6d9686ea2ea0d62b237748669e19f66d7a0 Mon Sep 17 00:00:00 2001 From: Roman Khlopkov <roman.khlopkov@demlabs.net> Date: Fri, 26 Nov 2021 15:44:26 +0300 Subject: [PATCH] [*] Old format emissions load fix --- modules/common/dap_chain_datum_token.c | 16 +++++++++------- modules/common/include/dap_chain_datum_token.h | 2 +- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/modules/common/dap_chain_datum_token.c b/modules/common/dap_chain_datum_token.c index 3187d5384b..140a22e8cd 100644 --- a/modules/common/dap_chain_datum_token.c +++ b/modules/common/dap_chain_datum_token.c @@ -236,22 +236,24 @@ size_t dap_chain_datum_emission_get_size(uint8_t *a_emission_serial) return l_ret; } -dap_chain_datum_token_emission_t *dap_chain_datum_emission_read(uint8_t *a_emission_serial, size_t *a_emission_size) +dap_chain_datum_token_emission_t *dap_chain_datum_emission_read(byte_t *a_emission_serial, size_t *a_emission_size) { assert(a_emission_serial); assert(a_emission_size); dap_chain_datum_token_emission_t *l_emission; if (((dap_chain_datum_token_emission_t *)a_emission_serial)->hdr.version == 0) { - size_t l_add_size = DAP_CHAIN_DATUM_NONCE_SIZE + sizeof(uint256_t) - sizeof(uint64_t); - l_emission = DAP_NEW_Z_SIZE(dap_chain_datum_token_emission_t, *a_emission_size + l_add_size); + size_t l_emission_size = *a_emission_size; size_t l_old_hdr_size = sizeof(struct dap_chain_emission_header_v0); + size_t l_add_size = sizeof(l_emission->hdr) - l_old_hdr_size; + l_emission = DAP_NEW_Z_SIZE(dap_chain_datum_token_emission_t, l_emission_size + l_add_size); l_emission->hdr.version = 1; memcpy(l_emission, a_emission_serial, l_old_hdr_size); - memcpy(l_emission + l_old_hdr_size + l_add_size, + memcpy((byte_t *)l_emission + sizeof(l_emission->hdr), a_emission_serial + l_old_hdr_size, - *a_emission_size - l_old_hdr_size); - *a_emission_size += l_add_size; + l_emission_size - l_old_hdr_size); + l_emission_size += l_add_size; + (*a_emission_size) = l_emission_size; } else - l_emission = DAP_DUP_SIZE(a_emission_serial, *a_emission_size); + l_emission = DAP_DUP_SIZE(a_emission_serial, (*a_emission_size)); return l_emission; } diff --git a/modules/common/include/dap_chain_datum_token.h b/modules/common/include/dap_chain_datum_token.h index a07829a434..78f1792d2e 100644 --- a/modules/common/include/dap_chain_datum_token.h +++ b/modules/common/include/dap_chain_datum_token.h @@ -253,5 +253,5 @@ dap_tsd_t* dap_chain_datum_token_tsd_get(dap_chain_datum_token_t * a_token, siz void dap_chain_datum_token_flags_dump(dap_string_t * a_str_out, uint16_t a_flags); void dap_chain_datum_token_certs_dump(dap_string_t * a_str_out, byte_t * a_data_n_tsd, size_t a_certs_size); dap_sign_t ** dap_chain_datum_token_simple_signs_parse(dap_chain_datum_token_t * a_datum_token, size_t a_datum_token_size, size_t *a_signs_count, size_t * a_signs_valid); -dap_chain_datum_token_emission_t *dap_chain_datum_emission_read(uint8_t *a_emission_serial, size_t *a_emission_size); +dap_chain_datum_token_emission_t *dap_chain_datum_emission_read(byte_t *a_emission_serial, size_t *a_emission_size); size_t dap_chain_datum_emission_get_size(uint8_t *a_emission_serial); -- GitLab