From c83303354c81ffd883366fbd748dc37457ca74cc Mon Sep 17 00:00:00 2001 From: Juan Jose Garcia Ripoll Date: Fri, 4 Feb 2011 22:56:37 +0100 Subject: [PATCH] Wrong size of bytecodes when splitting the bytecodes --- src/c/disassembler.d | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/c/disassembler.d b/src/c/disassembler.d index c795baf5f..8f41641be 100644 --- a/src/c/disassembler.d +++ b/src/c/disassembler.d @@ -626,7 +626,8 @@ si_bc_split(cl_object b) data = Cnil; name = Cnil; } else { - vector = ecl_alloc_simple_vector(b->bytecodes.code_size, aet_b8); + vector = ecl_alloc_simple_vector(b->bytecodes.code_size * + sizeof(cl_opcode), aet_b8); vector->vector.self.b8 = (uint8_t*)b->bytecodes.code; data = ecl_alloc_simple_vector(b->bytecodes.data_size, aet_object); data->vector.self.t = b->bytecodes.data; @@ -646,7 +647,7 @@ si_bc_join(cl_object lex, cl_object code, cl_object data, cl_object name) output->bclosure.entry = _ecl_bclosure_dispatch_vararg; } else { /* Ensure minimal sanity of data */ - unlikely_if (Null(cl_simple_vector_p(code)) || + unlikely_if (!ECL_VECTORP(code) || (code->vector.elttype != aet_b8)) { FEwrong_type_nth_arg(@[si::bc-join], 0, code, @@ -654,7 +655,7 @@ si_bc_join(cl_object lex, cl_object code, cl_object data, cl_object name) @'simple-array', @'ext::byte8')); } - unlikely_if (Null(cl_simple_vector_p(data)) || + unlikely_if (!ECL_VECTORP(code) || (data->vector.elttype != aet_object)) { FEwrong_type_nth_arg(@[si::bc-join], 0, output, @@ -669,7 +670,7 @@ si_bc_join(cl_object lex, cl_object code, cl_object data, cl_object name) output->bytecodes.name = Cnil; output->bytecodes.definition = Cnil; output->bytecodes.entry = _ecl_bytecodes_dispatch_vararg; - output->bytecodes.code_size = code->vector.fillp; + output->bytecodes.code_size = code->vector.fillp / sizeof(cl_opcode); output->bytecodes.code = (void*)code->vector.self.b8; output->bytecodes.data_size = data->vector.fillp; output->bytecodes.data = data->vector.self.t;