X-Git-Url: http://j8takagi.net/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Ftoken.c;h=dac982fdfcd21f8b71fbcf0e97763835485cce05;hb=71492ed8d58051866a0ab179f76d5dc2296ca178;hp=a8e5c8e4e90a91f9f85ebc4c508d1ff7e0b149c8;hpb=02d7b9b5209b2cb08151f7d1c160e2d18bc7c0d0;p=YACASL2.git diff --git a/src/token.c b/src/token.c index a8e5c8e..dac982f 100644 --- a/src/token.c +++ b/src/token.c @@ -53,7 +53,7 @@ OPD *opdtok(const char *str) setcerr(117, NULL); /* operand is too many */ break; } - /* 先頭が「=」の場合 */ + /* 先頭が等号(=)の場合 */ if(*r == '=') { r++; } @@ -119,7 +119,7 @@ CMDLINE *linetok(const char *line) break; } } - if(*tokens != '\0') { + if(*tokens != '\n' && *tokens != '\0') { p = tokens; cmdl = malloc_chk(sizeof(CMDLINE), "cmdl"); /* ラベルの取得。行の先頭が空白またはタブの場合、ラベルは空 */ @@ -143,6 +143,7 @@ CMDLINE *linetok(const char *line) if(cmdl->label != NULL) { /* ラベルが定義されていて命令がない場合はエラー */ setcerr(105, NULL); /* no command in the line */ } + FREE(cmdl); } else { /* 命令の取得 */ sepp = p + strcspn(p, " \t\n"); @@ -153,8 +154,8 @@ CMDLINE *linetok(const char *line) while(*p == ' ' || *p == '\t') { p++; } - /* 改行かタブまでの文字列を取得。 - 「'」で囲まれた文字列に含まれる場合があるため、空白は無視 */ + /* 改行かタブまでの文字列を取得 */ + /* 「'」で囲まれた文字列に含まれる場合があるため、空白は無視 */ if((sepp = p + strcspn(p, "\t\n")) > p) { *sepp = '\0'; cmdl->opd = opdtok(p);