X-Git-Url: http://j8takagi.net/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fcasl2.c;h=c272d058eedc59af84853cfae981ec0f1decaff6;hb=85a32cf5cc8e39dc5d4f085179559de71ad87cb8;hp=1f18a40194e9134c89e0f63b2f59e6db38399f3d;hpb=de18494f8acd2f8ca87b86c54bfee1c2094c0d83;p=YACASL2.git diff --git a/src/casl2.c b/src/casl2.c index 1f18a40..c272d05 100644 --- a/src/casl2.c +++ b/src/casl2.c @@ -37,6 +37,14 @@ CERR cerr_casl2[] = { { 126, "no source file" }, }; +/** + * CASL IIのエラーをエラーリストに追加 + */ +void addcerrlist_casl2() +{ + addcerrlist(ARRAYSIZE(cerr_casl2), cerr_casl2); +} + /** * アセンブル結果を書き込むファイルの名前 */ @@ -61,7 +69,7 @@ int main(int argc, char *argv[]) "Usage: %s [-slLaAtTdh] [-oO[]] [-M ] [-C ] FILE1[ FILE2 ...]\n"; cerr_init(); - addcerrlist(ARRAYSIZE(cerr_casl2), cerr_casl2); + addcerrlist_casl2(); addcerrlist_assemble(); addcerrlist_exec(); /* オプションの処理 */ @@ -127,16 +135,15 @@ int main(int argc, char *argv[]) for(pass = FIRST; pass <= SECOND; pass++) { if(pass == FIRST) { create_cmdtype_code(); /* 命令の名前とタイプがキーのハッシュ表を作成 */ - asprop = malloc_chk(sizeof(ASPROP), "asprop"); /* アセンブル時のプロパティ用の領域確保 */ + asptr = malloc_chk(sizeof(ASPTR), "asptr"); /* アセンブル時のプロパティ用の領域確保 */ } for(i = optind; i < argc; i++) { /* データの格納開始位置 */ if(pass == FIRST) { - beginptr[i] = asprop->ptr; + beginptr[i] = asptr->ptr; } else if(pass == SECOND) { - asprop->ptr = beginptr[i]; + asptr->ptr = beginptr[i]; } - asprop->prog = NULL; if(execmode.trace == true || execmode.dump == true || asmode.src == true || asmode.label == true || asmode.asdetail == true) { @@ -156,15 +163,14 @@ int main(int argc, char *argv[]) } if(pass == SECOND) { freelabel(); /* ラベルハッシュ表を解放 */ - free_chk(asprop->prog, "asprop.prog"); /* プログラム名を解放 */ - free_chk(asprop, "asprop"); /* アセンブル時のプロパティを解放 */ free_cmdtype_code(); /* 命令の名前とタイプがキーのハッシュ表を解放 */ + FREE(asptr); /* アセンブル時のプロパティを解放 */ } } if(res == true) { if(objfile != NULL) { outassemble(objfile); - free_chk(objfile, "objfile"); + FREE(objfile); } if(asmode.onlyassemble == false) { create_code_type(); /* 命令のコードとタイプがキーのハッシュ表を作成 */