diff --git a/modules/common/dap_chain_datum_token.c b/modules/common/dap_chain_datum_token.c index 3187d5384b045dd4aa7e1cfc865808a44bf97759..140a22e8cdb33b3751d7e5251c4b34d5e6fc924a 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 a07829a43481f2dd261ff3f792c2218c85be9289..78f1792d2e9acda44dd233f16e52e6c8618b113c 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);