diff options
-rw-r--r-- | assemble.c | 2 | ||||
-rw-r--r-- | parser.c | 7 |
2 files changed, 4 insertions, 5 deletions
@@ -349,8 +349,6 @@ int64_t assemble(int32_t segment, int64_t offset, int bits, uint32_t cp, OUT_RAWDATA, align, NO_SEG, NO_SEG); } offset += e->stringlen + align; - if (e->type == EOT_DB_STRING_FREE) - nasm_free(e->stringval); } } if (t > 0 && t == instruction->times - 1) { @@ -947,9 +947,10 @@ void cleanup_insn(insn * i) { extop *e; - while (i->eops) { - e = i->eops; - i->eops = i->eops->next; + while ((e = i->eops)) { + i->eops = e->next; + if (e->type == EOT_DB_STRING_FREE) + nasm_free(e->stringval); nasm_free(e); } } |