From 8f00dd8b77df280f7456cd3dfe7a147916730434 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benedikt=20B=C3=B6hm?= Date: Mon, 6 Jul 2009 18:15:25 +0200 Subject: fix segmentation fault on syntax error --- src/emu/asm.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/emu/asm.c b/src/emu/asm.c index 8e39202..4548b48 100644 --- a/src/emu/asm.c +++ b/src/emu/asm.c @@ -23,31 +23,31 @@ uint32_t compile(const char *line) } /* ADD, SUB, MUL, DIV, MOD, AND, OR */ - if (sscanf(line, "%s r%d, r%d, r%d", mnem, &a, &b, &c) == 4) + if (sscanf(line, "%4s r%d, r%d, r%d", mnem, &a, &b, &c) == 4) return mnemonic2opc(mnem) | REGa(a) | REGb(b) | REGc(c); /* LW, SW */ - if (sscanf(line, "%s r%d, r%d, %d", mnem, &a, &b, &c) == 4) + if (sscanf(line, "%4s r%d, r%d, %d", mnem, &a, &b, &c) == 4) return mnemonic2opc(mnem) | REGa(a) | REGb(b) | IMMc(c); /* CMP */ - if (sscanf(line, "%s r%d, r%d", mnem, &a, &b) == 3) + if (sscanf(line, "%4s r%d, r%d", mnem, &a, &b) == 3) return mnemonic2opc(mnem) | REGa(a) | REGb(b); /* MOV, BEZ */ - if (sscanf(line, "%s r%2d, %d", mnem, &a, &c) == 3) + if (sscanf(line, "%4s r%2d, %d", mnem, &a, &c) == 3) return mnemonic2opc(mnem) | REGa(a) | IMMc(c); /* EQ, NE, LT, LE, GE, GT, PUSH, POP */ - if (sscanf(line, "%s r%d", mnem, &a) == 2) + if (sscanf(line, "%4s r%d", mnem, &a) == 2) return mnemonic2opc(mnem) | REGa(a); /* JMP, CALL */ - if (sscanf(line, "%s %d", mnem, &c) == 2) + if (sscanf(line, "%4s %d", mnem, &c) == 2) return mnemonic2opc(mnem) | IMMc(c); /* RET, SYS */ - if (sscanf(line, "%s", mnem) == 1) + if (sscanf(line, "%4s", mnem) == 1) return mnemonic2opc(mnem); return 0xFFFFFFFF; -- cgit v1.2.3