diff --git a/core/iwasm/common/wasm_c_api.c b/core/iwasm/common/wasm_c_api.c index 27b1e0405..bdc5315eb 100644 --- a/core/iwasm/common/wasm_c_api.c +++ b/core/iwasm/common/wasm_c_api.c @@ -1924,14 +1924,16 @@ wasm_frame_func_offset(const wasm_frame_t *frame) void wasm_frame_vec_clone_internal(Vector *src, Vector *out) { - bh_assert(src->num_elems != 0 && src->data); - - bh_vector_destroy(out); - if (!bh_vector_init(out, src->num_elems, sizeof(WASMCApiFrame), false)) { + if (src->num_elems == 0) { bh_vector_destroy(out); return; } + if (!bh_vector_destroy(out) + || !bh_vector_init(out, src->num_elems, sizeof(WASMCApiFrame), false)) { + return; + } + bh_memcpy_s(out->data, src->num_elems * sizeof(WASMCApiFrame), src->data, src->num_elems * sizeof(WASMCApiFrame)); out->num_elems = src->num_elems;