From e3310ce74fa44ea02392f4dcadc509007237eadc Mon Sep 17 00:00:00 2001 From: q66 Date: Thu, 8 Sep 2016 22:04:36 +0200 Subject: [PATCH] fix invalid free in code cleanup --- src/cs_val.cc | 2 +- src/cs_vm.cc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/cs_val.cc b/src/cs_val.cc index aa53886..636a851 100644 --- a/src/cs_val.cc +++ b/src/cs_val.cc @@ -19,7 +19,7 @@ static inline void csv_cleanup(CsValueType tv, T &stor) { case CsValueType::Code: { ostd::Uint32 *bcode = csv_get(stor); if (bcode[-1] == CsCodeStart) { - delete[] bcode; + delete[] &bcode[-1]; } break; } diff --git a/src/cs_vm.cc b/src/cs_vm.cc index c4cc0dc..be4741e 100644 --- a/src/cs_vm.cc +++ b/src/cs_vm.cc @@ -443,7 +443,7 @@ static inline void cs_call_alias( CsAliasInternal::compile_code(a, cs) ); bcode_incr(codep); - runcode(cs, codep+1, (result)); + runcode(cs, codep+1, result); bcode_decr(codep); cs.p_callstack = aliaslink.next; cs.identflags = oldflags;