X-Git-Url: http://j8takagi.net/cgi-bin/gitweb.cgi?p=YACASL2.git;a=blobdiff_plain;f=src%2Ftoken.c;h=3ea2073ffa10102040a557eea3c6f7f102d84701;hp=2757a7b46ded91501641176b3f3dfc4f9325946e;hb=992a77b00c9ac733943cefffb85894604b9a4ba4;hpb=edbf60de601c468ee39f5a883ee36d0c74a9e825 diff --git a/src/token.c b/src/token.c index 2757a7b..3ea2073 100644 --- a/src/token.c +++ b/src/token.c @@ -6,7 +6,7 @@ OPD *opdtok(const char *str) { OPD *opd = malloc(sizeof(OPD)); char *p, *q, *sepp; - int sepc = ',', len = 0; + int sepc = ',', qcnt = 0; bool quoting = false; opd->opdc = 0; @@ -32,7 +32,7 @@ OPD *opdtok(const char *str) } /* 「'」の分、文字列の長さを小さくする */ if(*(q+1) != '\'') { - len--; + qcnt++; } } if(quoting == true) { @@ -50,13 +50,13 @@ OPD *opdtok(const char *str) setcerr(121, NULL); /* cannot get operand token */ break; } - len += strlen(p); - if(len > OPDSIZE) { + if(strlen(p) - qcnt > OPDSIZE) { setcerr(118, NULL); /* operand length is too long */ break; } opd->opdv[(++opd->opdc)-1] = strdup(p); p = q = sepp + 1; + qcnt = 0; } } while(sepc == ','); return opd;