X-Git-Url: http://j8takagi.net/cgi-bin/gitweb.cgi?p=YACASL2.git;a=blobdiff_plain;f=src%2Ftoken.c;fp=src%2Ftoken.c;h=d2242af96c9e6f798178801c9874d3fa75d3381e;hp=fb35c8bf169b26872f2b8a464909751bc1e1ebbe;hb=9a48fd93fe01972f0de42c6349e2e8a8160ec5df;hpb=f8636262f5c60efbb9d1c608e2276d359bc348a0 diff --git a/src/token.c b/src/token.c index fb35c8b..d2242af 100644 --- a/src/token.c +++ b/src/token.c @@ -122,16 +122,17 @@ CMDLINE *linetok(const char *line) if(*tokens != '\n' && *tokens != '\0') { p = tokens; cmdl = malloc_chk(sizeof(CMDLINE), "cmdl"); + cmdl->label = malloc_chk(sizeof(LABELSIZE + 1), "cmdl.label"); /* ラベルの取得。行の先頭が空白またはタブの場合、ラベルは空 */ if((sepp = p + strcspn(p, " \t\n")) == p){ - cmdl->label = NULL; + cmdl->label = '\0'; } else { /* ラベルを取得 */ *sepp = '\0'; /* 文字列が長すぎる場合はエラー */ if(strlen(p) > LABELSIZE) { setcerr(104, p); /* label length is too long */ } - cmdl->label = strdup_chk(p, "cmdl.label"); + strcpy(cmdl->label, p); p = sepp + 1; } /* ラベルと命令の間の空白をスキップ */ @@ -140,7 +141,7 @@ CMDLINE *linetok(const char *line) } /* 命令とオペランドの取得 */ if(*p == '\n' || *p == '\0') { /* 命令がない場合は、終了 */ - if(cmdl->label != NULL) { /* ラベルが定義されていて命令がない場合はエラー */ + if(cmdl->label != '\0') { /* ラベルが定義されていて命令がない場合はエラー */ setcerr(105, ""); /* no command in the line */ } FREE(cmdl);