From 494956915193b1928c08e18f4eed8b28aa53045b Mon Sep 17 00:00:00 2001 From: Peter Johnson Date: Thu, 10 Jan 2002 05:16:19 +0000 Subject: [PATCH] Fix memory leak. Add assert call to silence LCLint. svn path=/trunk/yasm/; revision=454 --- modules/arch/x86/x86bc.c | 5 ++++- src/arch/x86/x86bc.c | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/modules/arch/x86/x86bc.c b/modules/arch/x86/x86bc.c index f49f1f45..39a67acc 100644 --- a/modules/arch/x86/x86bc.c +++ b/modules/arch/x86/x86bc.c @@ -495,8 +495,10 @@ x86_bc_calc_len_insn(x86_insn *insn, unsigned long *len, ea->nosplit, &displen, &ead_t.modrm, &ead_t.valid_modrm, &ead_t.need_modrm, &ead_t.sib, &ead_t.valid_sib, - &ead_t.need_sib)) + &ead_t.need_sib)) { + expr_delete(temp); return -1; /* failed, don't bother checking rest of insn */ + } if (!temp) { /* If the expression was deleted (temp=NULL), then make the @@ -538,6 +540,7 @@ x86_bc_calc_len_insn(x86_insn *insn, unsigned long *len, if (imm->val) { temp = expr_copy(imm->val); + assert(temp != NULL); expr_expand_labelequ(temp, resolve_label); /* TODO: check imm->len vs. sized len from expr? */ diff --git a/src/arch/x86/x86bc.c b/src/arch/x86/x86bc.c index f49f1f45..39a67acc 100644 --- a/src/arch/x86/x86bc.c +++ b/src/arch/x86/x86bc.c @@ -495,8 +495,10 @@ x86_bc_calc_len_insn(x86_insn *insn, unsigned long *len, ea->nosplit, &displen, &ead_t.modrm, &ead_t.valid_modrm, &ead_t.need_modrm, &ead_t.sib, &ead_t.valid_sib, - &ead_t.need_sib)) + &ead_t.need_sib)) { + expr_delete(temp); return -1; /* failed, don't bother checking rest of insn */ + } if (!temp) { /* If the expression was deleted (temp=NULL), then make the @@ -538,6 +540,7 @@ x86_bc_calc_len_insn(x86_insn *insn, unsigned long *len, if (imm->val) { temp = expr_copy(imm->val); + assert(temp != NULL); expr_expand_labelequ(temp, resolve_label); /* TODO: check imm->len vs. sized len from expr? */ -- 2.40.0