projects
/
YACASL2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Ubuntu 10.04 PPC版で判明した問題を修正
[YACASL2.git]
/
src
/
casl2.c
diff --git
a/src/casl2.c
b/src/casl2.c
index
d17922c
..
1f18a40
100644
(file)
--- a/
src/casl2.c
+++ b/
src/casl2.c
@@
-4,10
+4,10
@@
#define _GNU_SOURCE
#include <getopt.h>
#define _GNU_SOURCE
#include <getopt.h>
+#include "cmem.h"
+#include "cerr.h"
#include "assemble.h"
#include "exec.h"
#include "assemble.h"
#include "exec.h"
-#include "cerr.h"
-#include "cmem.h"
/**
* casl2コマンドのオプション
/**
* casl2コマンドのオプション
@@
-33,7
+33,7
@@
static struct option longopts[] = {
/**
* casl2のエラー定義
*/
/**
* casl2のエラー定義
*/
-
static
CERR cerr_casl2[] = {
+CERR cerr_casl2[] = {
{ 126, "no source file" },
};
{ 126, "no source file" },
};
@@
-61,7
+61,9
@@
int main(int argc, char *argv[])
"Usage: %s [-slLaAtTdh] [-oO[<OBJECTFILE>]] [-M <MEMORYSIZE>] [-C <CLOCKS>] FILE1[ FILE2 ...]\n";
cerr_init();
"Usage: %s [-slLaAtTdh] [-oO[<OBJECTFILE>]] [-M <MEMORYSIZE>] [-C <CLOCKS>] FILE1[ FILE2 ...]\n";
cerr_init();
- addcerrlist(sizeof(cerr_casl2), cerr_casl2);
+ addcerrlist(ARRAYSIZE(cerr_casl2), cerr_casl2);
+ addcerrlist_assemble();
+ addcerrlist_exec();
/* オプションの処理 */
while((opt = getopt_long(argc, argv, "tTdslLao::O::AM:C:h", longopts, NULL)) != -1) {
switch(opt) {
/* オプションの処理 */
while((opt = getopt_long(argc, argv, "tTdslLao::O::AM:C:h", longopts, NULL)) != -1) {
switch(opt) {
@@
-141,6
+143,7
@@
int main(int argc, char *argv[])
fprintf(stdout, "\nAssemble %s (%d)\n", argv[i], pass);
}
if((res = assemble(argv[i], pass)) == false) {
fprintf(stdout, "\nAssemble %s (%d)\n", argv[i], pass);
}
if((res = assemble(argv[i], pass)) == false) {
+ freecerr(); /* エラーの解放 */
exit(-1);
}
}
exit(-1);
}
}
@@
-161,6
+164,7
@@
int main(int argc, char *argv[])
if(res == true) {
if(objfile != NULL) {
outassemble(objfile);
if(res == true) {
if(objfile != NULL) {
outassemble(objfile);
+ free_chk(objfile, "objfile");
}
if(asmode.onlyassemble == false) {
create_code_type(); /* 命令のコードとタイプがキーのハッシュ表を作成 */
}
if(asmode.onlyassemble == false) {
create_code_type(); /* 命令のコードとタイプがキーのハッシュ表を作成 */
@@
-173,8
+177,6
@@
int main(int argc, char *argv[])
if(cerr->num > 0) {
status = -1;
}
if(cerr->num > 0) {
status = -1;
}
- free_chk(objfile, "objfile");
- /* エラーの解放 */
- freecerr();
+ freecerr(); /* エラーの解放 */
return status;
}
return status;
}