]> granicus.if.org Git - yasm/commitdiff
Don't free EA when simplifying shift_op case. Not only is this code completely
authorPeter Johnson <peter@tortall.net>
Sat, 1 Dec 2001 06:15:58 +0000 (06:15 -0000)
committerPeter Johnson <peter@tortall.net>
Sat, 1 Dec 2001 06:15:58 +0000 (06:15 -0000)
wrong (the ModRM byte definitely must be kept), but it had a memory leak too
(it just freed the ea without calling expr_delete())!

svn path=/trunk/yasm/; revision=367

modules/arch/x86/bytecode.c
modules/arch/x86/x86bc.c
src/arch/x86/bytecode.c
src/arch/x86/x86bc.c

index 8b0070e7d8fbcdd3c1f4abe4ce58e4ef425c1a94..78edcb4ae7067a31610210676d6a4e55547cd389 100644 (file)
@@ -503,9 +503,6 @@ x86_bc_parser_finalize_insn(x86_insn *insn)
                if (intnum_get_uint(num) == 1) {
                    /* Use ,1 form: first copy ,1 opcode. */
                    insn->opcode[0] = insn->opcode[1];
-                   /* Delete ModRM, as it's no longer needed */
-                   xfree(ea);
-                   insn->ea = (effaddr *)NULL;
                    /* Delete Imm, as it's not needed */
                    expr_delete(imm->val);
                    xfree(imm);
index 8b0070e7d8fbcdd3c1f4abe4ce58e4ef425c1a94..78edcb4ae7067a31610210676d6a4e55547cd389 100644 (file)
@@ -503,9 +503,6 @@ x86_bc_parser_finalize_insn(x86_insn *insn)
                if (intnum_get_uint(num) == 1) {
                    /* Use ,1 form: first copy ,1 opcode. */
                    insn->opcode[0] = insn->opcode[1];
-                   /* Delete ModRM, as it's no longer needed */
-                   xfree(ea);
-                   insn->ea = (effaddr *)NULL;
                    /* Delete Imm, as it's not needed */
                    expr_delete(imm->val);
                    xfree(imm);
index 8b0070e7d8fbcdd3c1f4abe4ce58e4ef425c1a94..78edcb4ae7067a31610210676d6a4e55547cd389 100644 (file)
@@ -503,9 +503,6 @@ x86_bc_parser_finalize_insn(x86_insn *insn)
                if (intnum_get_uint(num) == 1) {
                    /* Use ,1 form: first copy ,1 opcode. */
                    insn->opcode[0] = insn->opcode[1];
-                   /* Delete ModRM, as it's no longer needed */
-                   xfree(ea);
-                   insn->ea = (effaddr *)NULL;
                    /* Delete Imm, as it's not needed */
                    expr_delete(imm->val);
                    xfree(imm);
index 8b0070e7d8fbcdd3c1f4abe4ce58e4ef425c1a94..78edcb4ae7067a31610210676d6a4e55547cd389 100644 (file)
@@ -503,9 +503,6 @@ x86_bc_parser_finalize_insn(x86_insn *insn)
                if (intnum_get_uint(num) == 1) {
                    /* Use ,1 form: first copy ,1 opcode. */
                    insn->opcode[0] = insn->opcode[1];
-                   /* Delete ModRM, as it's no longer needed */
-                   xfree(ea);
-                   insn->ea = (effaddr *)NULL;
                    /* Delete Imm, as it's not needed */
                    expr_delete(imm->val);
                    xfree(imm);