changeset 258:852b8765bba6

Fix infinite loop in Z80 disassembler
author Mike Pavone <pavone@retrodev.com>
date Tue, 30 Apr 2013 00:37:30 -0700
parents 4c7933444df4
children d9417261366f
files zdis.c
diffstat 1 files changed, 3 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/zdis.c	Mon Apr 29 23:02:39 2013 -0700
+++ b/zdis.c	Tue Apr 30 00:37:30 2013 -0700
@@ -125,7 +125,7 @@
 			break;
 		}
 		for(;;) {
-			if (address > filesize) {
+			if (address > filesize || is_visited(address)) {
 				break;
 			}
 			visit(address);
@@ -133,8 +133,8 @@
 			address += (next-encoded);
 			encoded = next;
 			
-			//m68k_disasm(&instbuf, disbuf);
-			//printf("%X: %s\n", instbuf.address, disbuf);
+			//z80_disasm(&instbuf, disbuf);
+			//printf("%X: %s\n", address, disbuf);
 			if (instbuf.op == Z80_HALT || instbuf.op == Z80_RET || instbuf.op == Z80_RETI || instbuf.op == Z80_RETN || instbuf.op == Z80_RST) {
 				break;
 			}