From 755c5127855b776d1a4260f05afc95640045f29d Mon Sep 17 00:00:00 2001 From: j8takagi Date: Sun, 14 Mar 2010 01:20:30 +0900 Subject: [PATCH 1/1] =?utf8?q?shutdown=E9=96=A2=E6=95=B0=E3=81=AE=E8=BF=BD?= =?utf8?q?=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- include/casl2.h | 3 +++ src/casl2.c | 9 +++++---- src/comet2.c | 1 + src/struct.c | 6 ++++++ 4 files changed, 15 insertions(+), 4 deletions(-) diff --git a/include/casl2.h b/include/casl2.h index 5d21418..038f3dd 100644 --- a/include/casl2.h +++ b/include/casl2.h @@ -101,6 +101,9 @@ extern int cmdtabsize; /* COMET II仮想マシンのリセット */ void reset(); +/* COMET II仮想マシンのシャットダウン */ +void shutdown(); + /* 命令と命令タイプがキーのハッシュ表を作成する */ bool create_cmdtype_code(); diff --git a/src/casl2.c b/src/casl2.c index 989bbe7..d47abcd 100644 --- a/src/casl2.c +++ b/src/casl2.c @@ -121,6 +121,7 @@ int main(int argc, char *argv[]) /* ソースファイルが指定されていない場合は終了 */ if(argv[optind] == NULL) { setcerr(126, NULL); /* source file is not specified */ + fprintf(stderr, "CASL2 error - %d: %s\n", cerrno, cerrmsg); goto casl2err; } /* COMET II仮想マシンのリセット */ @@ -143,7 +144,7 @@ int main(int argc, char *argv[]) fprintf(stdout, "\nAssemble %s (%d)\n", argv[i], pass); } if((status = assemble(argv[i], pass)) == false) { - exit(-1); + goto casl2err; } } if(pass == FIRST && asmode.label == true) { @@ -164,12 +165,12 @@ int main(int argc, char *argv[]) exec(); /* プログラム実行 */ } } + shutdown(); if(cerrno > 0) { - freecerr(); - exit(-1); + goto casl2err; } return 0; casl2err: - fprintf(stderr, "CASL2 error - %d: %s\n", cerrno, cerrmsg); + freecerr(); exit(-1); } diff --git a/src/comet2.c b/src/comet2.c index bb07c5f..a7fb3f5 100644 --- a/src/comet2.c +++ b/src/comet2.c @@ -86,6 +86,7 @@ int main(int argc, char *argv[]) if(loadassemble(argv[optind]) == true) { exec(); /* プログラム実行 */ } + shutdown(); if(cerrno > 0) { goto comet2err; } diff --git a/src/struct.c b/src/struct.c index f21c92e..7c3e785 100644 --- a/src/struct.c +++ b/src/struct.c @@ -31,3 +31,9 @@ void reset() memory[i] = 0x0; } } + +/* COMET II仮想マシンのシャットダウン */ +void shutdown() +{ + free(memory); +} -- 2.18.0